解决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 相关文章推荐
一个检测表单数据的JavaScript实例
Oct 31 Javascript
jQuery和AngularJS的区别浅析
Jan 29 Javascript
学习Bootstrap组件之下拉菜单
Jul 28 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
Oct 01 Javascript
自己封装的一个简单的倒计时功能实例
Nov 23 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
Apr 13 Javascript
详谈Node.js之操作文件系统
Aug 29 Javascript
详解VUE2.X过滤器的使用方法
Jan 11 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
Jan 16 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
Jul 24 Javascript
Vue $emit()不能触发父组件方法的原因及解决
Jul 28 Javascript
vue在图片上传的时候压缩图片
Nov 18 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 文件状态缓存带来的问题
2008/12/14 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
2019/05/28 PHP
js类中获取外部函数名的方法
2007/08/19 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
Nuxt 项目性能优化调研分析
2020/11/07 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python中使用动态变量名的方法
2014/05/06 Python
Python切片用法实例教程
2014/09/08 Python
深入理解Python变量与常量
2016/06/02 Python
Python编程之string相关操作实例详解
2017/07/22 Python
python八大排序算法速度实例对比
2017/12/06 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
一行Python代码过滤标点符号等特殊字符
2019/08/12 Python
简单了解python数组的基本操作
2019/11/26 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
毕业自我鉴定范文
2013/11/06 职场文书
信息管理专业自荐书
2014/06/05 职场文书
创建文明城市标语
2014/06/16 职场文书
电力工程合作意向书
2015/05/11 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS