Vue中添加过渡效果的方法


Posted in Javascript onMarch 16, 2017

关于vue的过渡效果,vue官方给的概述是这样的。

Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。

包括以下工具:

1、在 CSS 过渡和动画中自动应用 class

2、可以配合使用第三方 CSS 动画库,如 Animate.css

3、在过渡钩子函数中使用 JavaScript 直接操作 DOM

4、可以配合使用第三方 JavaScript 动画库,如 Velocity.js

其中里面也给出了许多的例子,但是例子给到了“多个元素过渡”的时候,就没有案例的代码了,在这里对vue官方文档的这部分案例做一部分补充。

以下我的代码

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <script src="../js/vue.js" charset="utf-8"></script>
 <title>过渡效果-多个元素的过渡</title>
 <style>
  /*淡入淡出按钮,这个使得按钮的效果很差*/
  /*在 “on” 按钮和 “off” 按钮的过渡中,两个按钮都被重绘了,一个离开过渡的时候另一个开始进入过渡。这是 <transition> 的默认行为 - 进入和离开同时发生。*/
  .fade-enter-active,.fade-leave-active{
   transition: all .5s
  }
  .fade-enter,.fade-leave-active{
   opacity: 0
  }
  /*淡入淡出+绝对定位*/
  #app2{
   position: relative;
   height: 100px;
   width: 100px;
   background:green;
  }
  #app2 button{
   position: absolute;
   left:50%;
   top: 50%;
  }
  .fade-abosolute-enter,.fade-abosolute-leave-active{
   opacity: 0
  }
  .fade-abosolute-enter-active,.fade-abosolute-leave-active{
   transition: all 1s
  }
  /*淡入淡出+绝对定位+滑动效果*/
  /*这三种效果合在一起,产生的效果是比较好的*/
  #app3{
   width: 200px;
   height: 100px;
   background: rgb(26, 46, 224);
   position: relative;
  }
  #app3 button{
   position: absolute;
   left: 50%;
   top: 50%;
  }
  .fade-slide-enter-active,.fade-slide-leave-active{
   transition: all 1s
  }
  .fade-slide-enter{
   opacity: 0;
   transform: translateX(30px);
  }
  .fade-slide-leave-active{
   opacity: 0;
   transform: translateX(-30px);
  }
  #app4{
   position: relative;
   width: 200px;
   height: 100px;
   background: rgb(8, 201, 80);
  }
  #app4 button{
   position: absolute;
   left: 50%;
   top: 50%;
  }
  .fade-slide-mode-enter-active,.fade-slide-mode-leave-active{
   transition: all .5s
  }
  .fade-slide-mode-enter{
   opacity: 0;
   transform: translateX(30px);
  }
  .fade-slide-mode-leave-active{
   opacity: 0;
   transform: translateX(-30px);
  }
 </style>
</head>
<body>
  <!--  淡入淡出按钮,这个使得按钮的效果很差 -->
 <div id="app1">
  <!-- 这个淡出淡出效果,在原本没加上过渡模式的时候效果非常糟糕,在加入了mode="out-in"之后,效果比较好,out-in指的是先过渡现有的元素,在过渡新元素 -->
  <transition name="fade" mode="out-in">
    <button v-if="isEditing" key="save" @click="isEditing = !isEditing">
     save
    </button>
    <button v-else key="edit" @click="isEditing = !isEditing">
     Edit
    </button>
  </transition>
 </div>
 <!-- 淡入淡出+绝对定位 -->
 <div id="app2">
  <transition name="fade-abosolute">
   <button v-if="on" key="on" @click="on = !on">
    on
   </button>
   <button v-else key="off" @click="on = !on">
    off
   </button>
  </transition>
 </div>
 <!-- 淡入淡出+绝对定位+滑动 -->
 <div id="app3">
  <transition name="fade-slide">
   <button v-if="on" key="on" @click="on = !on">
    on
   </button>
   <button v-else key="off" @click="on = !on">
    off
   </button>
  </transition>
 </div>
 <!-- in-out,out-in的过渡模式,同时生效的进入和离开的过渡不能满足所有要求,所以vue提供了过渡模式 -->
 <div id="app4">
  <transition name="fade-slide-mode" mode="in-out">
   <button v-if="on" key="on" @click="on = !on">
    on
   </button>
   <button v-else key="off" @click="on = !on">
    off
   </button>
  </transition>
 </div>
</body>
<script type="text/javascript">
 var vm1 = new Vue({
  el:'#app1',
  data () {
   return{
    isEditing:true,
   }
  }
 })
 var vm2 = new Vue({
  el:'#app2',
  data () {
   return {
    on:true
   }
  }
 })
 var vm3 = new Vue({
  el:'#app3',
  data () {
   return {
    on:true
   }
  }
 })
 var vm4 = new Vue({
  el:'#app4',
  data () {
   return {
    on:true
   }
  }
 })
</script>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
Sep 25 Javascript
jQuery实现当按下回车键时绑定点击事件
Jan 28 Javascript
JavaScript基础知识学习笔记
Dec 02 Javascript
JS实现图片高亮展示效果实例
Nov 24 Javascript
jQuery获取Table某列的值(推荐)
Mar 03 Javascript
javascript遍历json对象的key和任意js对象属性实例
Mar 09 Javascript
jQuery实现验证码功能
Mar 17 Javascript
bootstrap IE8 兼容性处理
Mar 22 Javascript
Vue开发中整合axios的文件整理
Apr 29 Javascript
JS实现的点击按钮图片上下滚动效果示例
Jan 28 Javascript
JS+CSS3实现的简易钟表效果示例
Apr 13 Javascript
基于JavaScript实现单例模式
Oct 30 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
Mar 16 #Javascript
js实现瀑布流效果(自动生成新的内容)
Mar 16 #Javascript
es6的数字处理的方法(5个)
Mar 16 #Javascript
Webpack打包慢问题的完美解决方法
Mar 16 #Javascript
div中文字内容溢出常见的解决方法
Mar 16 #Javascript
JavaScript实现类似淘宝的购物车效果
Mar 16 #Javascript
原生js更改css样式的两种方式
Mar 15 #Javascript
You might like
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
php json_encode奇怪问题说明
2011/09/27 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
php中动态变量用法实例
2015/06/10 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
php解析url并得到url中的参数及获取url参数的四种方式
2015/10/26 PHP
Yii中srbac权限扩展模块工作原理与用法分析
2016/07/14 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
JS表的模拟方法
2015/02/05 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
php 修改密码实现代码
2017/05/24 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
Python中AND、OR的一个使用小技巧
2015/02/18 Python
初学Python函数的笔记整理
2015/04/07 Python
关于反爬虫的一些简单总结
2017/12/13 Python
python os.listdir按文件存取时间顺序列出目录的实例
2018/10/21 Python
python实现dijkstra最短路由算法
2019/01/17 Python
Python 串口读写的实现方法
2019/06/12 Python
python读写csv文件方法详细总结
2019/07/05 Python
简单了解python元组tuple相关原理
2019/12/02 Python
Python基于BeautifulSoup爬取京东商品信息
2020/06/01 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
iostream与iostream.h的区别
2015/01/16 面试题
Hibernate持久层技术
2013/12/16 面试题
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
影子教师研修方案
2014/06/14 职场文书
法语专业求职信
2014/07/20 职场文书
开展批评与自我批评发言稿
2014/10/16 职场文书
人事局接收函
2015/01/31 职场文书
个人年终总结开头
2015/03/06 职场文书
重阳节主题班会
2015/08/17 职场文书
小学中队委竞选稿
2015/11/20 职场文书