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 相关文章推荐
一直复略了的一个问题,关于表单重复提交
Feb 15 Javascript
Javascript 两个窗体之间传值实现代码
Sep 25 Javascript
jquery.ui.draggable中文文档(原文翻译)
Nov 15 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
Jan 02 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
Jan 23 Javascript
jQuery表单验证功能实例
Aug 28 Javascript
利用JQuery写一个简单的异步分页插件
Mar 07 Javascript
JS实现全屏的四种写法
Dec 30 Javascript
使用canvas进行图像编辑的实例
Aug 29 Javascript
使用Jenkins部署React项目的方法步骤
Mar 11 Javascript
vue 实现 rem 布局或vw 布局的方法
Nov 13 Javascript
详解如何使用React Hooks请求数据并渲染
Oct 18 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
php 判断服务器操作系统的类型
2014/02/17 PHP
yii2 url重写并隐藏index.php方法
2018/12/10 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
Exjs 入门篇
2010/04/07 Javascript
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
Python max内置函数详细介绍
2016/11/17 Python
使用Python操作excel文件的实例代码
2017/10/15 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
Python内置加密模块用法解析
2019/11/25 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
python生成word合同的实例方法
2021/01/12 Python
Python实现微信表情包炸群功能
2021/01/28 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
工作交流会欢迎词
2014/01/12 职场文书
学校安全责任书
2014/04/14 职场文书
2014年出纳工作总结与计划
2014/12/09 职场文书
预备党员转正材料
2014/12/19 职场文书
职代会闭幕词
2015/01/28 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
windows安装python超详细图文教程
2021/05/21 Python