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 相关文章推荐
ExtJs事件机制基本代码模型和流程解析
Oct 24 Javascript
js相册效果代码(点击创建即可)
Apr 16 Javascript
js如何判断输入字符串长度
Dec 16 Javascript
js和jquery实现监听键盘事件示例代码
Jun 24 Javascript
AngularJS学习笔记之依赖注入详解
May 16 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
Jun 25 Javascript
Easyui的组合框的取值与赋值
Oct 28 Javascript
jQuery中的deferred对象和extend方法详解
May 08 jQuery
JS获取子节点、父节点和兄弟节点的方法实例总结
Jul 06 Javascript
详解vue引入子组件方法
Feb 12 Javascript
vue element自定义表单验证请求后端接口验证
Dec 11 Javascript
在vue中封装方法以及多处引用该方法详解
Aug 14 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 一个随机字符串生成代码
2010/05/26 PHP
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
php 模拟POST提交的2种方法详解
2013/06/17 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
thinkphp诸多限制条件下如何getshell详解
2020/12/09 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
vue中axios请求的封装实例代码
2019/03/23 Javascript
js/jQuery实现全选效果
2019/06/17 jQuery
微信小程序入门之指南针
2020/10/22 Javascript
js数组的基本使用总结
2021/01/18 Javascript
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
Python urls.py的三种配置写法实例详解
2017/04/28 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
python画出三角形外接圆和内切圆的方法
2018/01/25 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
PyQt5实现画布小程序
2020/05/30 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
新闻专业推荐信范文
2013/11/20 职场文书
服务行业个人求职的自我评价
2013/12/12 职场文书
电子信息工程专业推荐信
2014/02/14 职场文书
个人求职自荐信范文
2014/06/20 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
青岛导游词
2015/02/12 职场文书
个人德育工作总结
2015/03/05 职场文书
部门经理助理岗位职责
2015/04/13 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL
vue封装数字翻牌器
2022/04/20 Vue.js