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更改class和id的方法
Oct 10 Javascript
web前端开发也需要日志
Dec 09 Javascript
javascript开发技术大全-第1章javascript概述
Jul 03 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
Aug 09 Javascript
javascript完美拖拽的实现方法
Sep 29 Javascript
javascript 按键事件(兼容各浏览器)
Dec 20 Javascript
谈谈javascript中使用连等赋值操作带来的问题
Nov 26 Javascript
如何利用Promises编写更优雅的JavaScript代码
May 17 Javascript
响应式表格之固定表头的简单实现
Aug 26 Javascript
AngularJS前端页面操作之用户修改密码功能示例
Mar 27 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
Sep 04 Javascript
Vue + ts实现轮播插件的示例
Nov 10 Javascript
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
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
php常用文件操作函数汇总
2014/11/22 PHP
对PHP依赖注入的理解实例分析
2016/10/09 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
2018/08/10 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
filemanage功能中用到的lib.js
2007/04/08 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
判断在css加载完毕后执行后续代码示例
2014/09/03 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
Linux下为Node.js程序配置MySQL或Oracle数据库的方法
2016/03/19 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
python读取注册表中值的方法
2013/04/08 Python
总结Python编程中函数的使用要点
2016/03/20 Python
python实现顺时针打印矩阵
2019/03/02 Python
pybind11在Windows下的使用教程
2019/07/04 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
澳大利亚冒险体验:Adrenaline(跳伞、V8赛车、热气球等)
2017/09/18 全球购物
几个Shell Script面试题
2012/08/31 面试题
十一酒店活动方案
2014/02/20 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
仓库统计员岗位职责
2015/04/14 职场文书