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 读取元素的CSS信息的代码
Feb 07 Javascript
JS获取鼠标坐标的实例方法
Jul 18 Javascript
js左侧三级菜单导航实例代码
Sep 13 Javascript
javascript的事件触发器介绍的实现
Jun 05 Javascript
Javascript基础教程之break和continue语句
Jan 18 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
May 14 Javascript
基于iScroll实现内容滚动效果
Mar 21 Javascript
小程序:授权、登录、session_key、unionId的详解
May 15 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
Jun 21 Javascript
django中使用vue.js的要点总结
Jul 07 Javascript
element-ui 本地化使用教程详解
Oct 28 Javascript
JavaScript, select标签元素左右移动功能实现
May 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文件读取功能的应用实例
2015/05/08 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
2020/10/20 PHP
关于锚点跳转及jQuery下相关操作与插件
2012/10/01 Javascript
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
javascript使用Promise对象实现异步编程
2016/03/01 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python PIL模块与随机生成中文验证码
2016/02/27 Python
Django开发的简易留言板案例详解
2018/12/04 Python
分析经典Python开发工程师面试题
2019/04/08 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
python实现人工蜂群算法
2020/09/18 Python
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
大三自我鉴定范文
2013/10/05 职场文书
教师校本培训方案
2014/02/26 职场文书
农村改厕实施方案
2014/03/22 职场文书
关于青春的演讲稿
2014/05/05 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
离婚协议书范文2015
2015/01/26 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
美容院管理规章制度
2015/08/05 职场文书
简单实现一个手持弹幕功能+文字抖动特效
2021/03/31 HTML / CSS
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python