解决vue的过渡动画无法正常实现问题


Posted in Javascript onOctober 31, 2019

前记:最近在写vue的一个项目要实现过渡的效果,虽然vue动画不是强项,库也多,但是基本的坑还是得踩扎实;

建议:先学习vue官方文档的进入/离开 & 列表过渡章节,那么我们来看bug;

首先上出现问题的代码

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <style type="text/css">
    .haha-leave-active {
     transition: opacity .5s;
    }
    .haha-leave-to /* .fade-leave-active below version 2.1.8 */ {
     opacity: 0;
    }
    #demo{
     position: relative;
     width: 200px;
     height: 200px;
     margin: auto;
     top: 100px;
    }
    .bug{
     position: relative;
     opacity: 1;
    }
  </style>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
</head>
<body>
  <div id="demo">
   <button v-on:click="show = !show">点击</button>
   <transition name="haha">
     <div class="bug" v-if="show">你好</div>
   </transition>
  </div>
  <script type="text/javascript">
    new Vue({
     el: '#demo',
     data: {
      show: true
     }
    })
  </script>
</body>
</html>

以上代码看起起来真的没有什么问题,但是复制粘贴发现过渡怎么变成了延迟,仔细阅读官方文档找不同,连连看;

我们要过度的属性是opacity,相对于官方文档我们在要过渡的div里多加了一个opacitry的属性值为1,这就导致其实整个动画过程中opacitry的值都为1而不会出现动画中由1到0的过渡;

导致这个问题的根本原因是因为css优先级的问题,div的css优先级远大于动画中css属性的优先级,所以opacity的值始终都是div中的值并不发生过渡变化;

那么解决的办法其一当然是去掉在div中的opacitry的值,从而使得只存在动画中的opacitry从而实现动画;

但是当div中的属性需要存在我们又需要过渡动画的时候,我们需要!important这尊大神去改变css的优先级;!important是使当前css的优先级达到最高当然important就是优先级最低;

来! 上正确的代码

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <style type="text/css">
    .haha-leave-active {
     transition: opacity .5s;
    }
    .haha-leave-to /* .fade-leave-active below version 2.1.8 */ {
     opacity: 0;
    }
    #demo{
     position: relative;
     width: 200px;
     height: 200px;
     margin: auto;
     top: 100px;
    }
    .bug{
     position: relative;
     opacity: 1 important;
    }
  </style>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
</head>
<body>
  <div id="demo">
   <button v-on:click="show = !show">点击</button>
   <transition name="haha">
     <div class="bug" v-if="show">你好</div>
   </transition>
  </div>
  <script type="text/javascript">
    new Vue({
     el: '#demo',
     data: {
      show: true
     }
    })
  </script>
</body>
</html>

这样就既可以实现过渡效果也不拆去div中优先级较高的css属性

以上这篇解决vue的过渡动画无法正常实现问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Web 前端设计模式--Dom重构 提高显示性能
Oct 22 Javascript
jquery 使用点滴函数代码
May 20 Javascript
JS实现日期时间动态显示的方法
Dec 07 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
Mar 08 Javascript
js自定义select下拉框美化特效
May 12 Javascript
原生js封装添加class,删除class的实例
Nov 06 Javascript
React组件refs的使用详解
Feb 09 Javascript
Js中将Long转换成日期格式的实现方法
Jun 05 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
Feb 22 Javascript
Koa日志中间件封装开发详解
Mar 09 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
Sep 25 Javascript
使用JavaScript通过前端发送电子邮件
May 22 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
Oct 31 #Javascript
js new Date()实例测试
Oct 31 #Javascript
一起写一个即插即用的Vue Loading插件实现
Oct 31 #Javascript
Vue 使用beforeEach实现登录状态检查功能
Oct 31 #Javascript
vue路由切换之淡入淡出的简单实现
Oct 31 #Javascript
vue-router之实现导航切换过渡动画效果
Oct 31 #Javascript
使用vue-router切换页面时实现设置过渡动画
Oct 31 #Javascript
You might like
建立动态的WML站点(三)
2006/10/09 PHP
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
讨论javascript(一)工厂方式 js面象对象的定义方法
2009/12/15 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
js实现创建删除html元素小结
2015/09/30 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
浅谈Vuex注入Vue生命周期的过程
2019/05/20 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
谈一谈vue请求数据放在created好还是mounted里好
2020/07/27 Javascript
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
Python标准库之collections包的使用教程
2017/04/27 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
python实现最短路径的实例方法
2020/07/19 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
学校办公室主任职责
2013/12/27 职场文书
民主生活会发言材料
2014/10/20 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
小学母亲节活动总结
2015/02/10 职场文书
环卫个人总结
2015/03/03 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python
golang中的struct操作
2021/11/11 Golang
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis