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+mapbar实现地图定位
Apr 09 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
Aug 28 Javascript
使用简洁的jQuery方法实现隔行换色功能
Jan 02 Javascript
JavaScript用Number方法实现string转int
May 13 Javascript
使用百度地图api实现根据地址查询经纬度
Dec 11 Javascript
jQuery中[attribute*=value]选择器用法实例
Dec 31 Javascript
浅谈js里面的InttoStr和StrtoInt
Jun 14 Javascript
JS转换HTML转义符的方法
Aug 24 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
Jan 22 Javascript
Vuex模块化实现待办事项的状态管理
Mar 15 Javascript
基于vue cli 通过命令行传参实现多环境配置
Jul 12 Javascript
微信小程序实现下拉框功能
Jul 16 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
虫族 ZERG 概述
2020/03/14 星际争霸
探讨:parse url解析URL,返回其组成部分
2013/06/14 PHP
PHP类的声明与实例化及构造方法与析构方法详解
2016/01/26 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
php异常处理捕获错误整理
2019/09/23 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
vue2单元测试环境搭建
2018/05/24 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
python通过smpt发送邮件的方法
2015/04/30 Python
python将字母转化为数字实例方法
2019/10/04 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
教师师德教育的自我评价
2013/10/31 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
创建青年文明号材料
2014/05/09 职场文书
求职信范文大全
2014/05/26 职场文书
负责人任命书范本
2014/06/04 职场文书
医院见习报告范文
2014/11/03 职场文书
2014年音乐教师工作总结
2014/12/03 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
检察院起诉书
2015/05/20 职场文书
中国合伙人观后感
2015/06/02 职场文书
外出考察学习心得体会
2016/01/18 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python
Axios取消重复请求的方法实例详解
2021/06/15 Javascript
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript