解决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 addBookmark 加入收藏 多浏览器兼容
Aug 15 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
Mar 31 Javascript
jquery下checked取值问题的解决方法
Aug 09 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
Jun 21 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
Jan 14 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
Feb 21 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
Aug 07 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
Dec 07 Javascript
Angular2学习笔记——详解路由器模型(Router)
Dec 02 Javascript
jquery实现下拉框左右选择功能
Feb 21 Javascript
设置cookie指定时间失效(实例代码)
May 28 Javascript
vue实现树形结构样式和功能的实例代码
Oct 15 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
PHP自动生成月历代码
2006/10/09 PHP
PHP中Session的概念
2006/10/09 PHP
PHP常用代码
2006/11/23 PHP
PHP文本操作类
2006/11/25 PHP
PHP编码转换
2012/11/05 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
Prototype的Class.create函数解析
2011/09/22 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python爬虫教程之爬取百度贴吧并下载的示例
2014/03/07 Python
python爬虫常用的模块分析
2014/08/29 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
2018/05/29 Python
python-itchat 获取微信群用户信息的实例
2019/02/21 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
python实现ftp文件传输功能
2020/03/20 Python
大学生毕业自我鉴定
2013/11/06 职场文书
自我评价范文
2013/12/22 职场文书
高二历史教学反思
2014/01/25 职场文书
小班重阳节活动方案
2014/02/08 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
高三复习计划
2015/01/19 职场文书
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏