运行效果也可在这查看: https://jsbin.com/leyeyureki/edit?html,css,js,output
对这段代码的预期是:
(1)在未触发动画前,.box 的 opacity 的初始值是 0.3 ;
(2)在点击切换按钮时(使 show 变为 false),离开过渡动画被触发,css 中 opacity 的
值先变成 1,然后经过 3s 后,opacity 的值变成 0。
问题在于:当点击切换按钮时,貌似.fade-leave 这个类并没有生效。
我不是已经在 css 中添加了.fade-leave 这个类了吗?
但为什么点击切换时,它并没有将 opacity 的值首先变成 1.
.fade-leave 这个类不是在离开过渡被触发时会立刻生效吗?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
<div id="app">
<input type="button" value="切换" v-on:click="handleClick">
<transition name="fade">
<div class="box" v-if="show">hello world</div>
</transition>
</div>
</body>
</html>
.box {
/* .box 的初始值 */
opacity: 0.3;
}
/*
对这段代码的预期是:
(1)在未触发动画前,.box 的 opacity 的初始值是 0.3 ;
(2)在点击切换按钮时(使 show 变为 false),离开过渡动画被触发,css 中 opacity 的
值先变成 1,然后经过 3s 后,opacity 的值变成 0。
问题在于:当点击切换按钮时,貌似.fade-leave 这个类并没有生效。
我不是已经在 css 中添加了.fade-leave 这个类了吗?
但为什么点击切换时,它并没有将 opacity 的值首先变成 1.
.fade-leave 这个类不是在离开过渡被触发时会立刻生效吗?
*/
.fade-leave {
opacity: 1;
}
.fade-leave-active {
transition: opacity 3s;
}
.fade-leave-to {
opacity: 0;
}
var vm = new Vue({
el: "#app",
data: {
show: true
},
methods: {
handleClick: function() {
this.show = !this.show;
}
}
})
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.