added
This commit is contained in:
65
resources/js/components/SMImageStack.vue
Normal file
65
resources/js/components/SMImageStack.vue
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
<template>
|
||||||
|
<div class="sm-image-stack-container">
|
||||||
|
<div
|
||||||
|
class="sm-image-stack"
|
||||||
|
:style="{
|
||||||
|
height: 300 + props.src.length * 20 + 'px',
|
||||||
|
width: 533 + props.src.length * 40 + 'px',
|
||||||
|
}"
|
||||||
|
@mouseout="handleHover(-1)">
|
||||||
|
<div
|
||||||
|
v-for="(source, index) in props.src"
|
||||||
|
:key="index"
|
||||||
|
:style="{
|
||||||
|
top: index * 20 + 'px',
|
||||||
|
left: index * 40 + 'px',
|
||||||
|
'background-image': `url('${source}')`,
|
||||||
|
'z-index': frontImage == index ? 1 : null,
|
||||||
|
}"
|
||||||
|
class="image"
|
||||||
|
@mouseover="handleHover(index)"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref } from "vue";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
src: {
|
||||||
|
type: Array,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const frontImage = ref(-1);
|
||||||
|
|
||||||
|
const handleHover = (index) => {
|
||||||
|
console.log(index);
|
||||||
|
frontImage.value = index;
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.sm-image-stack-container {
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sm-image-stack {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.image {
|
||||||
|
position: absolute;
|
||||||
|
background-position: top left;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: cover;
|
||||||
|
height: 300px;
|
||||||
|
width: 533px;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: var(--base-shadow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user