解决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 相关文章推荐
FireFox JavaScript全局Event对象
Jun 14 Javascript
JS设置网页图片vspace和hspace属性的方法
Apr 01 Javascript
jQuery实现复选框批量选择与反选的方法
Jun 17 Javascript
实例讲解js验证表单项是否为空的方法
Jan 09 Javascript
详解vue表单验证组件 v-verify-plugin
Apr 19 Javascript
JS动态添加的div点击跳转到另一页面实现代码
Sep 30 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
Dec 22 Javascript
vue.js 获取select中的value实例
Mar 01 Javascript
ES6 Object属性新的写法实例小结
Jun 25 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
Jun 15 Javascript
解决vuecli3中img src 的引入问题
Aug 04 Javascript
Vue中强制组件重新渲染的正确方法
Jan 03 Vue.js
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
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
Zend Framework分页类用法详解
2016/03/22 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
2007/08/31 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
jquery实现图片上传之前预览的方法
2015/07/11 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
2016/07/07 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
2017/02/28 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
[00:32]2018DOTA2亚洲邀请赛VG出场
2018/04/03 DOTA
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
Python3多线程操作简单示例
2018/05/22 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
深圳茁壮笔试题
2015/05/28 面试题
石油大学毕业生自荐信
2014/01/28 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
医德医风自我评价2015
2015/03/03 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
python如何读取和存储dict()与.json格式文件
2022/06/25 Python