适用范围: vue、 v-if, v-show控制的模块切换
效果:
<template>
<div class="box">
<div id="translate-demo" class="demo">
<div class="translate-demo-wrapper">
<transition :name="`${on}-translate-fade`">
<div class="red" v-if="on === 'go'" key="on" v-swiperight="go" v-swipeleft="back">on</div>
<div class="yellow" v-else key="off" v-swiperight="go" v-swipeleft="back">off</div>
</transition>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
on: "go"
};
},
methods: {
go() {
this.on = "go";
},
back() {
this.on = "back";
console.log("后退");
}
},
computed: {},
components: {}
};
</script>
<style lang='less' scoped>
.translate-demo-wrapper {
position: relative;
height: 18px;
}
.translate-demo-wrapper div {
position: absolute;
width: 100vw;
height: 100vh;
}
.red {
background: red;
}
.yellow {
background: yellow;
}
.btn {
width: 50%;
height: 100px;
border: 1px solid red;
font-size: 25px;
margin: 0 auto;
}
.box {
text-align: center;
background: #e3e3e3;
}
// vue渐变前进
.go-translate-fade-enter-active,
.go-translate-fade-leave-active {
transition: all 1s;
}
.go-translate-fade-enter-active {
opacity: 1;
transform: translateX(0);
}
.go-translate-fade-enter,
.go-translate-fade-leave-active {
opacity: 0.2;
}
.go-translate-fade-enter {
transform: translateX(100vw);
}
.go-translate-fade-leave-active {
transform: translateX(-100vw);
}
// 渐变后退
.back-translate-fade-enter-active,
.back-translate-fade-leave-active {
transition: all 1s;
}
.back-translate-fade-enter-active {
opacity: 1;
transform: translateX(0);
}
.back-translate-fade-enter,
.back-translate-fade-leave-active {
opacity: 0.2;
}
.back-translate-fade-enter {
transform: translateX(-100vw);
}
.back-translate-fade-leave-active {
transform: translateX(100vw);
}
</style>
vue官网源链接,代码需要去控制台看源码才能找到: