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 相关文章推荐
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
Dec 16 Javascript
jquery validate 自定义验证方法介绍 日期验证
Feb 27 Javascript
js网页滚动条滚动事件实例分析
May 05 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
Sep 02 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
Mar 01 Javascript
用JS生成UUID的方法实例
Mar 30 Javascript
AngularJs实现分页功能不带省略号的代码
May 30 Javascript
深入理解Angular.JS中的Scope继承
Jun 04 Javascript
浅谈sass在vue注意的地方
Aug 10 Javascript
浅析node应用的timing-attack安全漏洞
Feb 28 Javascript
Vue中mintui的field实现blur和focus事件的方法
Aug 25 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
Jun 05 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
ThinkPHP之foreach标签使用概述
2014/06/30 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
JavaScript获取IP获取的是IPV6 如何校验
2016/06/12 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
vue keep-alive的简单总结
2021/01/25 Vue.js
python批量提取word内信息
2015/08/09 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
Python 调用有道翻译接口实现翻译
2020/03/02 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
Python依赖包迁移到断网环境操作
2020/07/13 Python
python 获取字典键值对的实现
2020/11/12 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
怎样让char类型的东西转换成int类型
2013/12/09 面试题
集团公司人力资源部岗位职责
2014/01/03 职场文书
经典导游欢迎词大全
2014/01/16 职场文书
公司会计岗位职责
2014/02/13 职场文书
企业文化宣传标语
2014/06/09 职场文书
建筑结构施工求职信
2014/07/11 职场文书
教师民族团结演讲稿
2014/08/27 职场文书
无房证明范本
2014/09/17 职场文书
工作表扬信范文
2015/01/17 职场文书
工程部岗位职责
2015/02/10 职场文书
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android
Win11安装升级时提示“该电脑必须支持安全启动”
2022/04/19 数码科技