Vue 列表上下过渡效果的实例代码


Posted in Javascript onJune 25, 2019

最近有个需求,一个列表上下移动要有简单过渡效果,在网上找了找没找到,可能是我搜的关键词不对?

试了试 Vue 的 transition-group ,也没有达到预期的效果,然后就花了点时间做了一个操作Demo。

最终效果

某列的数据由 X 位置上升到 Y 位置的过渡效果

Vue 列表上下过渡效果的实例代码

技术点 visibility: hidden v-for key 这么简单的实现哪有什么技术点,哈哈哈 实现方式

这个过渡效果一共由三部分组成:

Y行 位置插入 X行 位置的数据,添加一个高度展开效果,并使该行的数据不可见 X行 数据不可见, 并添加一个高度收起效果 原地克隆 X行 的DOM, 设置为固定定位 fixedtop 取X行距离 body 的位置( offsetTop ), 并做一个向上移动效果到 Y行 位置

来看一个放慢版的效果,加了个边框并且没有设置 visibility 属性,看的会更明了:

Vue 列表上下过渡效果的实例代码

简单说一下。

第一部分描述一个让目标位置底下所有行有一个向下移动的过程。

第二部分描述那个移动的行消失的过程。

第三部分描述一个移动的过程。

为了不污染数据渲染出来的视图,除了固定定位的那个盒子是直接操作DOM,之外的两个效果是通过操作数据+类名实现的。

遇到的问题 图片闪烁问题

Vue 列表上下过渡效果的实例代码

原因:由于 v-for 的时候给每行的 keyindex ,数据源发生变化后会导致受影响的元素的 index 也发生改变。

解决:将 key 的值由 index 更换为 item (唯一值, 在这里 item 指的是图片url) 。

频繁更新数据问题

当位置频繁改变的时候要清除上一次的动画遗留元素,不然元素会发生各种错乱,这个很容易想的到,错误演示就不录了,看一下完成的效果。

Vue 列表上下过渡效果的实例代码

Duplicate keys detected

原因:第一部分插入 X行 数据造成,因为两条相同的数据重复的 item 会造成重复的 key

解决:在进行第一部分的时候将原来那一行的 key 改为其它值。

<li :key="closeIndex === index ? Date.now() : item"></li>

我用的时间戳,其实理论上来讲只要能保持唯一写什么都可以,反正这一行数据将在动画结束后从数据中删除。

总结

以上所述是小编给大家介绍的Vue 列表上下过渡效果的实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
Javascript之文件操作
Mar 07 Javascript
基于jquery的表头固定的若干方法
Jan 27 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
Sep 06 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
Sep 27 Javascript
JavaScript获取某年某月的最后一天附截图
Jun 23 Javascript
jquery实现未经美化的简洁TAB菜单效果
Aug 28 Javascript
利用JS轻松实现获取表单数据
Dec 06 Javascript
javascript循环链表之约瑟夫环的实现方法
Jan 16 Javascript
JavaScript实现构造json数组的方法分析
Aug 17 Javascript
js中console在一行内打印字符串和对象的方法
Sep 10 Javascript
js 对象使用的小技巧实例分析
Nov 08 Javascript
vue中配置scss全局变量的步骤
Dec 28 Vue.js
JS 封装父页面子页面交互接口的实例代码
Jun 25 #Javascript
微信小程序Echarts图表组件使用方法详解
Jun 25 #Javascript
ES6 Object方法扩展的应用实例分析
Jun 25 #Javascript
ES6 Object属性新的写法实例小结
Jun 25 #Javascript
ES6模板字符串和标签模板的应用实例分析
Jun 25 #Javascript
基于Node.js搭建hexo博客过程详解
Jun 25 #Javascript
Node.js实现简单的爬取的示例代码
Jun 25 #Javascript
You might like
短波问题解答
2021/02/28 无线电
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
Prototype Function对象 学习
2009/07/12 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
jQuery树形控件zTree使用小结
2016/08/02 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
解决Layui数据表格中checkbox位置不居中的方法
2018/08/15 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
关于Python面向对象编程的知识点总结
2017/02/14 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
Python实现购物程序思路及代码
2017/07/24 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
python全局变量引用与修改过程解析
2020/01/07 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
简单了解python调用其他脚本方法实例
2020/03/26 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
如何转换一个字符串到enum值
2014/04/12 面试题
幼儿园的门卫岗位职责
2014/04/10 职场文书
环保倡议书100字
2014/05/15 职场文书
国贸专业毕业求职信
2014/06/11 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
python实现层次聚类的方法
2021/11/01 Python