Vue官方文档transition-group标签案例疑惑记录
时间:2019-04-16
本文章向大家介绍Vue官方文档transition-group标签案例疑惑记录,主要包括Vue官方文档transition-group标签案例疑惑记录使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近在看Vue的官方文档,看到transition-group动画标签时,对其中的一个案例实现过程疑惑了好久,这里记录一下,以便之后查阅.废话不多说,上代码:
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.14.1/lodash.min.js"></script>
<title>vue pro</title>
<style type="text/css">
.list-complete-item {
transition: all 1s;
display: inline-block;
margin-right: 10px;
}
.list-complete-enter, .list-complete-leave-to
/* .list-complete-leave-active for below version 2.1.8 */ {
opacity: 0;
transform: translateY(30px);
}
.list-complete-leave-active {
position: absolute;
}
</style>
</head>
<body>
<div id="list-complete-demo" class="demo">
<button v-on:click="shuffle">Shuffle</button>
<button v-on:click="add">Add</button>
<button v-on:click="remove">Remove</button>
<transition-group name="list-complete" tag="p" :duration="5000">
<span
v-for="item in items"
v-bind:key="item"
class="list-complete-item"
>
{{ item }}
</span>
</transition-group>
</div>
<script type="text/javascript">
var vm = new Vue({
el: '#list-complete-demo',
data: {
items: [1,2,3,4,5,6,7,8,9],
nextNum: 10
},
methods: {
randomIndex: function () {
return Math.floor(Math.random() * this.items.length)
},
add: function () {
this.items.splice(this.randomIndex(), 0, this.nextNum++)
},
remove: function () {
this.items.splice(this.randomIndex(), 1)
},
shuffle: function () {
this.items = _.shuffle(this.items)
}
}
})
</script>
</body>
</html>
案例效果如下图所示:
我好奇的是,为何要添加.list-complete-leave-active样式把position设为absolute,推测一番:
当移除一个元素时,如果想要达到被移除元素下移的同时后边元素向前补进的动画效果,必须在元素下移开始的时候把position设为absolute,这样移除元素不占位置,后方元素立刻执行左移动画.但是,如果不加这条样式的话,会等到被移除元素下移动画结束,被销毁后,后方元素开始执行左移动画,事实会这样吗?把.list-complete-leave-active注销,效果如图所示:
注销之后发现,当移除元素被销毁后,后方元素并没有执行前移动画,而是直接到了新位置.
为什么会这样呢?个人猜测是由于移除元素被销毁后,transition-group标签的动画流程彻底结束,这时其他元素重新排序归位,不再继续执行动画.欢迎各位说出其他看法,相互学习!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法