Vue基础进阶 之 列表过渡
在前面的博客我们一直在操作单个元素的过渡,如果是对多个元素过渡,例如列表,这时就要用到<transition-group>这个组件了;
如何使用:将要操作的列表元素放在<transition-group></transition-group>内,其他与<transition>基本一致; 注意:在<transition-group>的元素要指定个唯一的 :key 属性
例如:
代码:
<transition name='fade'>
<div v-show="flag" class="mybtn"></div>
<div v-show="flag" class="mybtn"></div> </transition>
提示的错误:

当然用了transition-group还不对

提示错误:子组件需要一个key
注意,它们的key值是数值,如果是一个字符型,需要在其vue代码中定义其属性,将属性定义为数值,当然子组件的key值不能一样的
最终修改后正确的效果:

实现两个组件的代码:
<div>
<button @click="flag=!flag">显示/隐藏</button>
<transition-group name='fade'>
<div v-show="flag" class="mybtn" :key='a'></div>
<div v-show="flag" class="mybtn" :key='b'></div>
</transition-group>
</div>
vue代码:
let vm= new Vue({
data:{
flag:false,
a:'',
b:''
}
}).$mount('div');
总的代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>15_列表过渡</title>
<script type="text/javascript" src="../js/vue.js" ></script>
<style> .mybtn{ width: 100px;
height: 100px;
background-color: red;
transform: translateX(50px);
}
.fade-enter-active,.fade-leave-active{
transition: all 2s; }
.fade-enter{
opacity: ;
transform: translateX(0px);
}
.fade-enter-to{
opacity: ;
transform: translateX(50px);
}
.fade-leave{
opacity: ;
transform: translateX(50px);
}
.fade-leave-to{
opacity: ;
transform: translateX(0px);
} </style> </head>
<body>
<div> <button @click="flag=!flag">显示/隐藏</button>
<transition-group name='fade'>
<div v-show="flag" class="mybtn" :key='a'></div>
<div v-show="flag" class="mybtn" :key='b'></div> </transition-group> </div>
</body> <script> let vm= new Vue({
data:{ flag:false,
a:'',
b:'' } }).$mount('div'); </script>
</html>
测试transition-group的使用
小案例
最终效果:

vue代码:
<script>
let vm= new Vue({
data:{
flag:false,
a:'',
b:'',
numArray:[,,,,]
},
methods:{
addNum(){
let num=Math.ceil(Math.random()*);//向上取整
this.numArray.push(num);
},
removeNum(index){
this.numArray.splice(index,);
}
}
}).$mount('div');
</script>
以上代码根据索引删除数字
<div>
<button @click="addNum">添加数字</button>
<transition-group name='fade'>
<li v-for="(item,index) in numArray" :key="item">
{{item}}
<button @click="removeNum(index)">-</button>
</li>
</transition-group>
</div>
在transition-group中默认是tag='span'
用到的样式:
<style>
.fade-enter-active,.fade-leave-active{
position: absolute;
transition: all .5s;
}
.fade-enter{
opacity: ;
transform: translateX(-20px);
}
.fade-enter-to{
opacity: ;
}
.fade-leave{
opacity: ;
}
.fade-leave-to{
opacity: ;
transform: translateX(20px);
}
.fade-move{
transition: transform .5s;
}
</style>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>15_列表过渡</title>
<script type="text/javascript" src="../js/vue.js" ></script>
<style> .fade-enter-active,.fade-leave-active{
position: absolute;
transition: all .5s; }
.fade-enter{
opacity: ;
transform: translateX(-20px);
}
.fade-enter-to{
opacity: ; }
.fade-leave{
opacity: ; }
.fade-leave-to{
opacity: ;
transform: translateX(20px);
} .fade-move{
transition: transform .5s;
}
</style> </head>
<body>
<div> <button @click="addNum">添加数字</button>
<transition-group name='fade'>
<li v-for="(item,index) in numArray" :key="item">
{{item}}
<button @click="removeNum(index)">-</button> </li> </transition-group> </div>
</body> <script> let vm= new Vue({
data:{ flag:false,
a:'',
b:'',
numArray:[,,,,] },
methods:{
addNum(){
let num=Math.ceil(Math.random()*);//向上取整
this.numArray.push(num);
},
removeNum(index){
this.numArray.splice(index,); }
} }).$mount('div'); </script>
</html>
小案例总的代码
Vue基础进阶 之 列表过渡的更多相关文章
- vue 基础-->进阶 教程(3):组件嵌套、组件之间的通信、路由机制
前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零开始,教给大家vue的基础.高级操作.组件 ...
- vue 基础-->进阶 教程(1): 基础(数据绑定)
第一章 建议学习时间4小时 课程共3章 前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零 ...
- vue 基础-->进阶 教程(2): 指令、组件
第二章 建议学习时间4小时 课程共3章 前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零 ...
- Vue基础进阶 之 过渡效果
进入/离开过渡效果:Vue在插入.更新或移除DOM时,可以设置一些动画效果: 如何使用过渡效果:利用<transition></transition>组件将需要应用的过渡效果的 ...
- Vue基础-作用域插槽-列表组件
Vue 测试版本:Vue.js v2.5.13 Vue 官网介绍作用域插槽时, 在 2.5.0+,slot-scope 能被用在任意元素或组件中而不再局限于 <template>. 作用域 ...
- vue 基础-->进阶 教程(2): 指令、自定义指令、组件
第二章 建议学习时间4小时 课程共3章 前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零 ...
- Vue基础进阶 之 自定义指令
自定义指令-----钩子函数 自定义指令 除了内置指令,Vue也允许用户自定义指令: 注册指令:通过全局API Vue.directive可以注册自定义指令: 自定义指令的钩子函数: bind: in ...
- Vue基础进阶 之 实例方法--生命周期
在上一篇博客中我们知道生命周期的方法: 生命周期: vm.$mount:手动挂载Vue实例: vm.$destroy:销毁Vue实例,清理数据绑定,移除事件监听: vm.$nextTick:将方法中的 ...
- Vue基础进阶 之 实例方法
常用的实例方法: 数据: vm.$set:设置属性值: vm.$delete:删除属性值: vm.$watch:观测数据变化: 生命周期: vm.$mount:手动挂载Vue实例: vm.$destr ...
随机推荐
- Thinkpad L440 无线驱动突然无法使用,无法搜索到无线上网
问题描述: 环境:Thinkpad L440,不知道是什么版本的,找朋友买的,买的时候连系统都没有,自己装的Win7系统,驱动均为官方网站下载安装.电脑在使用过程中一直带着电池,连接电源使用. 问题: ...
- 【thinkphp5.1】 endroid/qrcode 二维码生成
composer 链接: https://packagist.org/packages/endroid/qrcode 注意:PHP版本 要求 7.1+ 1. 使用 composer 安装 endroi ...
- A real example of vioplot in R (sample data and code attached)
Basic information Package name: vioplot Package homepage: https://cran.r-project.org/web/packages/vi ...
- 如何使用LinkedHashMap来实现一个LruCache
最近在看mybatis的源代码,发现了mybatis中实现的LruCache使用到了LinkedHashMap,所以就探究了一下LinkedHashMap是如何支持Lru缓存的 LinkedHashM ...
- python全栈开发 * 01知识点汇总 * 180530
一 python简介. 1.创始人: 吉多 .范罗苏姆 \ (Guido van Rossum). 2.时间 : 1989年. 3.主要应用领域 : 云计算 \ WEB开发 \ ...
- IFrame标签的两个用法介绍
1. 作为弹出层铺底覆盖 大家如果做过那种黑色遮罩盖住整张页面,而碰巧用户用的是IE6,更碰巧的是页面上有select元素,那就有得头疼了(原理就不在这里赘述了).我们会发现弹出的DIV没法遮住sel ...
- 201621123049《java程序设计》第四周学习总结
1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 继承 类型转换 覆盖 1.2 尝试使用思维导图将这些关键词组织起来.注:思维导图一般不需要出现过多的字. 2. 书面作业 1. ...
- listview添加数据
1. 添加数据: ListView1.ViewStyle:=vsReport; ListView1.Columns.Add; ListView1.Columns[0].Caption:='aaaa'; ...
- iOS 如果页面 A 跳转到 页面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪个先调用?
如果页面 A 跳转到 页面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪个先调用? 1. - (void)pushViewController:(U ...
- .net core 获取不到session 和cookies的值
在启动类的configure services()方法中,设置选项.checkconsent必需=context=false;如下: services.Configure<CookiePolic ...