热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

vue组件中使用transition和transition-group实现过渡动画

本文给大家分享一下vue组件中使用transition和transition-group设置过渡动画,总结来说可分为分为name版,js钩子操作类名版,js钩子操作行内样式版,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧

前言

记一次vue 组件中使用 transition 和 transition-group 设置过渡动画,总结来说可分为分为 name 版, js 钩子操作类名版, js 钩子操作行内样式版...

template模板结构

// 单个元素
  
   

hello

// 列表元素: 注意group的直接子元素是v-for渲染出来的

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 实现

// 例如实现上述列表依次显示
 
// 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 钩子过渡动画: 通过操作行内属性, 自定义动画

// 对应的操作方法; 添加自定义的 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实现过渡动画 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!


推荐阅读
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文详细介绍了W3C标准盒模型和IE传统盒模型的区别,探讨了CSS3中box-sizing属性的使用方法及其在布局中的重要性。通过实例分析,帮助读者更好地理解和应用这一关键概念。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • 自己用过的一些比较有用的css3新属性【HTML】
    web前端|html教程自己用过的一些比较用的css3新属性web前端-html教程css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开 ... [详细]
  • 本文详细介绍如何使用CSS自定义HTML5视频播放器的样式,涵盖常见属性及跨浏览器兼容性问题。发布时间:2020-09-14 14:46:29;来源:亿速云;阅读量:58;作者:小新。 ... [详细]
  • 一个登陆界面
    预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ... [详细]
  • Vue 3.0 翻牌数字组件使用指南
    本文详细介绍了如何在 Vue 3.0 中使用翻牌数字组件,包括其基本设置和高级配置,旨在帮助开发者快速掌握并应用这一动态视觉效果。 ... [详细]
  • 本文详细介绍了 WebKit 内核中常用的 CSS 属性,包括文本大小调整、阴影效果和颜色渐变等,帮助开发者更好地理解和使用这些属性。 ... [详细]
  • Web App vs Native App:未来的移动应用趋势
    随着移动互联网的发展,Web App和Native App之间的竞争日益激烈。对于开发者而言,选择哪一种技术路径更为明智?本文将深入探讨两种应用模式的特点及未来趋势。 ... [详细]
  • 利用CSS3和React实现数字滚动动画组件
    在前端开发中,数字滚动动画是一个常见的需求。本文将详细介绍如何使用CSS3和React构建一个数字滚动动画组件,包括组件的代码实现和样式设计。如果您对HTML版本感兴趣,欢迎留言获取。 ... [详细]
  • select下拉箭头改变,兼容ie8/9
    各个浏览器下select默认的下拉箭头差别较大,通常会清除默认样式,重新设计<html><head><metacharsetutf-8> ... [详细]
  • 使用Bootstrap创建响应式渐变固定头部导航栏的方法
    本文详细介绍了如何利用Bootstrap框架构建一个具有渐变效果的固定顶部响应式导航栏,包括HTML结构、CSS样式以及JavaScript交互的完整实现过程。适合前端开发者和学习者参考。 ... [详细]
  • HTML5实现逼真树叶飘落动画详解
    本文详细介绍了如何利用HTML5技术创建一个逼真的树叶飘落动画,包括HTML、CSS和JavaScript的代码实现及优化技巧。 ... [详细]
  • 在进行微信小程序开发过程中,遇到了需要实现类似微信朋友圈那样的长文本折叠功能的需求。本文将详细探讨其实现方法及注意事项。 ... [详细]
  • 本文介绍如何利用纯CSS技术,通过简单的DOM结构和CSS样式设计,创建一个具有动态光影效果的太阳天气图标。 ... [详细]
author-avatar
手机用户2502926887
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有