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 相关文章推荐
JQuery 实现的页面滚动时浮动窗口控件
Jul 10 Javascript
js中function()使用方法
Dec 24 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
Aug 28 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
May 26 Javascript
ES6中Proxy代理用法实例浅析
Apr 06 Javascript
React简单介绍
May 24 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
Dec 27 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
Jan 25 Javascript
一个基于react的图片裁剪组件示例
Apr 18 Javascript
layer.confirm取消按钮绑定事件的方法
Aug 17 Javascript
jQuery实现基本动画效果的方法详解
Sep 06 jQuery
Angular利用HTTP POST下载流文件的步骤记录
Jul 26 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
改造一台复古桌面收音机
2021/03/02 无线电
理解php Hash函数,增强密码安全
2011/02/25 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
学习使用bootstrap的modal和carousel
2016/12/09 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
python简单读取大文件的方法
2016/07/01 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
2016/07/12 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
python的turtle库使用详解
2019/05/10 Python
Django 1.10以上版本 url 配置注意事项详解
2019/08/05 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
CSS3的颜色渐变效果的示例代码
2017/09/29 HTML / CSS
CSS3动画特效在活动页中的应用
2020/01/21 HTML / CSS
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
入职担保书怎么写
2014/05/12 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
工程部岗位职责
2015/02/10 职场文书
2015中学学校工作总结
2015/07/20 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python
利用python进行数据加载
2021/06/20 Python
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS