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 相关文章推荐
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
Mar 22 Javascript
jQuery基础知识filter()和find()实例说明
Jul 06 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
Aug 24 Javascript
JS实现根据出生年月计算年龄
Jan 10 Javascript
jQuery实现统计输入文字个数的方法
Mar 11 Javascript
Yii2使用Bootbox插件实现自定义弹窗
Apr 02 Javascript
原生javascript实现的ajax异步封装功能示例
Nov 03 Javascript
浅谈vue方法内的方法使用this的问题
Sep 15 Javascript
Vuex的基本概念、项目搭建以及入坑点
Nov 04 Javascript
Layui数据表格 前后端json数据接收的方法
Sep 19 Javascript
在vue项目实现一个ctrl+f的搜索功能
Feb 28 Javascript
Vue.js中Line第三方登录api的实现代码
Jun 29 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
PHP var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
php 网上商城促销设计实例代码
2012/02/17 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
jQuery无刷新上传之uploadify简单代码
2017/01/17 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
2018/09/27 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
[06:16]第十四期-国士无双绝地翻盘之撼地神牛
2014/06/24 DOTA
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
2019/08/13 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
Django REST framwork的权限验证实例
2020/04/02 Python
Python __slots__的使用方法
2020/11/15 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
大学生护理专业自荐信
2013/10/03 职场文书
企业车辆管理制度
2014/01/24 职场文书
综合实践活动总结
2014/05/05 职场文书
运动会入场口号
2014/06/07 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
Pytorch DataLoader shuffle验证方式
2021/06/02 Python
redis 解决库存并发问题实现数量控制
2022/04/08 Redis