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 相关文章推荐
Ctrl+Enter提交内容信息
Jun 26 Javascript
JavaScript中“+=”的应用
Feb 02 Javascript
js 覆盖和重载 函数
Sep 25 Javascript
javascript setTimeout和setInterval 的区别
Dec 08 Javascript
jquery实现动态菜单的实例代码
Nov 28 Javascript
21个值得收藏的Javascript技巧
Feb 04 Javascript
js中精确计算加法和减法示例
Mar 28 Javascript
js限制文本框只能输入中文的方法
Aug 11 Javascript
jQuery 判断是否包含在数组中Array[]的方法
Aug 03 Javascript
js仿微信语音播放实现思路
Dec 12 Javascript
Vue表单之v-model绑定下拉列表功能
May 14 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
Jun 04 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遍历数组的4种方法总结
2014/07/05 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
js实现点击左右按钮轮播图片效果实例
2015/01/29 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
JavaScript中最容易混淆的作用域、提升、闭包知识详解(推荐)
2016/09/05 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
JavaScript变量提升和严格模式实例分析
2019/01/27 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
如何在Vue.JS中使用图标组件
2020/08/04 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
python抓取百度首页的方法
2015/05/19 Python
python正则表达式的使用
2017/06/12 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
台湾家适得:Homeget
2019/02/11 全球购物
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
DJI全球:DJI Global
2021/03/15 全球购物
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
先进事迹演讲稿
2014/09/01 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
保密工作整改报告
2014/11/06 职场文书
详解Go语言运用广度优先搜索走迷宫
2021/06/23 Python