蝙蝠岛资源网 Design By www.hbtsch.com
前言
记一次vue 组件中使用 transition 和 transition-group 设置过渡动画,总结来说可分为分为 name 版, js 钩子操作类名版, js 钩子操作行内样式版...
template模板结构
// 单个元素 <transition name="自定义名字"> <p v-if="show">hello</p> </transition> // 列表元素: 注意group的直接子元素是v-for渲染出来的 <ul class="list"> <transition-group name="list"> <li v-for="(item, index) in gameList" :key="item.id"> <app-horizontal :itemData="item"></app-horizontal> </li> </transition-group> </ul>
name 版,name 为组件中的属性
出现的过程: name-enter(初始态) => name-enter-active(中间态) => name-enter-to(终止态)
消失的过程: name-leave => name-leave-active => name-leave-to
以进场过渡动画为例子
我们可以分别设置 enter 阶段 和 enter-to 阶段的动画
1.设置进入时需要过渡的属性
.name-enter { opacity: 0; transform: translateY(30px) }
2.然后在 name-enter-active中设置过渡时间
.name-enter-active { transition: all .3s; }
3.最后在 name-enter-to 中写上终止态属性
其实终止态的opacity: 1;transform: none; 是默认的,可以不用写
.name-enter-to { opacity: 1; transform: translateY(0); }
如果要给列表中的元素设置交错的效果, 元素不多的话可以添加 delay 属性
.name-enter-active:nth-child(3n+1) { transition-delay: 0s; } .name-enter-active:nth-child(3n+2) { transition-delay: .1s; } .name-enter-active:nth-child(3n+3) { transition-delay: .2s; }
离场动画同理...
js 钩子实现过渡动画: 通过操作类名; 就是 name 版的 js 实现
// 例如实现上述列表依次显示 <ul class="list"> <transition-group v-bind:css="false" v-on:before-enter="beforeEnter" v-on:enter="enter" v-on:after-enter="afterEnter"> <li v-for="(item, index) in gameList" :key="item.id" :data-delay="index*100" > <app-horizontal :itemData="item"></app-horizontal> </li> </transition-group> </ul> // methods: { // 事先定义上述类名 // 在beforeEnter enter afterEnter 钩子中手动操作上述类名 // 初始态 beforeEnter(dom) { dom.classList.add('list-enter', 'list-enter-active'); }, // 中间态 enter(dom,done) { // 通过 setTimeout + dataset 实现过渡 let delay = dom.dataset.delay; setTimeout(function () { dom.classList.remove('list-enter'); dom.classList.add('list-enter-to'); //监听 transitionend 事件 var transitionend = window.ontransitionend "transitionend" : "webkitTransitionEnd"; dom.addEventListener(transitionend, function onEnd() { // 移除事件 dom.removeEventListener(transitionend, onEnd); //调用done(),表示动画已完成 done() }); }, delay) }, // 终止态 afterEnter(dom) { dom.classList.remove('list-enter-to', 'list-enter-active'); } }
js 钩子过渡动画: 通过操作行内属性, 自定义动画
<ul class="list"> <transition-group v-bind:css="false" v-on:before-enter="beforeEnter" v-on:enter="enter" v-on:after-enter="afterEnter"> <li v-for="(item, index) in gameList" :key="item.id" :data-delay="index*100" data-y = "100%" > <app-horizontal :itemData="item"></app-horizontal> </li> </transition-group> </ul> // 对应的操作方法; 添加自定义的 dataset,给dom设置css样式;根据需求添加 methods: { // 初始态 beforeEnter(dom) { let { x = 0, y = 0, opacity = 0 } = dom.dataset; dom.style.cssText = `transition: .3s;opacity: ${opacity};transform: translateX(${x}) translateY(${y});`; }, // 中间态 enter(dom,done) { let delay = dom.dataset.delay; setTimeout(function () { dom.style.cssText = `transition: .3s;opacity: 1;transform: translateX(0) translateY(0);`; //监听 transitionend 事件 var transitionend = window.ontransitionend "transitionend" : "webkitTransitionEnd"; dom.addEventListener(transitionend, function onEnd() { dom.removeEventListener(transitionend, onEnd); done(); }); }, delay) }, // 终止态 afterEnter(dom) { dom.style.cssText = ""; } }
这里记录一下监听css3的animation动画和transition事件:
webkit-animation动画有三个事件: 开始事件: webkitAnimationStart 结束事件: webkitAnimationEnd 重复运动事件: webkitAnimationIteration css3的过渡属性transition: 一个事件 过渡结束: webkitTransitionEnd
总结
以上所述是小编给大家介绍的vue 组件中使用 transition 和 transition-group实现过渡动画 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
蝙蝠岛资源网 Design By www.hbtsch.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
蝙蝠岛资源网 Design By www.hbtsch.com
暂无vue 组件中使用 transition 和 transition-group实现过渡动画的评论...
更新日志
2024年12月27日
2024年12月27日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]