all files / src/slides/ slides-item.vue

100% Statements 2/2
100% Branches 0/0
100% Functions 2/2
100% Lines 2/2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56                                    12×             24×                                                            
<template>
    <transition name="slide">
        <div class="g-slides-item" v-if="visible" :class="{reverse}">
            <slot></slot>
        </div>
    </transition>
</template>
 
<script>
export default {
    name: 'slides-item',
    props: {
        name: {
            type: String,
            required: true
        }
    },
    data() {
        return {
			selected: '',
			reverse:false
        }
	},
	computed: {
		visible() {
			return this.name === this.selected
		}
	}
}
</script>
 
<style lang="scss" scoped>
.slide-leave-active {
    position: absolute;
    left: 0;
    top: 0;
	width:100%;
	height:100%;
}
.slide-enter-active,
.slide-leave-active {
    transition: all 0.5s;
}
.slide-enter {
    transform: translateX(-100%);
}
.slide-leave-to {
    transform: translateX(100%);
}
.slide-enter.reverse {
    transform: translateX(100%);
}
.slide-leave-to.reverse {
    transform: translateX(-100%);
}
</style>