使用vue的transition完成滑动过渡的示例代码


Posted in Javascript onJune 25, 2018

使用vue来做一些小巧的动画效果是非常方便的,今天本人想使用vue的transition来完成一个滑动过渡效果,这里和大家分享一下。

直接上源代码:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Vue滑动效果</title>
  <style>
    .d {
      position: absolute;
      border: 1px solid red;
      width: 30px;
      height: 30px;
    }
    @keyframes show {
      0% {
        opacity: 0;
        left: 32px;
      }
      100% {
        opacity: 1;
        left: 0;
      }
    }
    @keyframes hide {
      0% {
        opacity: 1;
        left: 0;
      }
      100% {
        opacity: 0;
        left: -32px;
      }
    }
    .show-enter-active {
      animation: show 1.2s;
    }
    .show-leave-active {
      animation: hide 1.2s;
    }
    .show-enter, .show-leave-to {
      opacity: 0;
    }
    .wrap {
      position: relative;
      width: 32px;
      height: 32px;
    }
  </style>
  <script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<div id="app">
  <p>{{ message }}</p>
  <div class="wrap">
    <transition name="show">
      <div class="d" v-for="item in list" :key="item.id" v-if="count === item.id">
        {{ item.text }}
      </div>
    </transition>
  </div>
  <button @click="add">add</button>
</div>

<script>
  new Vue({
    el: '#app',
    data () {
      return {
        message: 'Hello Vue.js!',
        count: 0,
        list: [
          {id: 0, text: 'aaa'},
          {id: 1, text: 'bbb'},
          {id: 2, text: 'ccc'}
        ]
      }
    },
    methods: {
      add: function () {
        if (this.count < this.list.length - 1) {
          this.count += 1;
        } else {
          this.count = 0;
        }
      }
    }
  })
</script>
</body>
</html>

这里需要注意的是父级使用relative,子级使用absolute进行定位,利用left值来进行位置的控制移动。这里如果使用transform的话,由于之前的div有一个渐变的消失过程,这个过程中他的位置一直有存在,造成了后面的div无法正确移动到对应位置,所以使用absolute更好。

实在不行可以使用transition的mode属性,设置成out-in,先让前者完成动画,让占据的位置完全消失,使得下一个div可以正常运动,不过这种方式只能先后完成动画,不能同时完成动画。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
prettify 代码高亮着色器google出品
Dec 28 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
Oct 23 Javascript
JavaScript的原型继承详解
Feb 15 Javascript
JavaScript数组前面插入元素的方法
Apr 06 Javascript
Angular.js如何从PHP读取后台数据
Mar 24 Javascript
AngularJs Managing Service Dependencies详解
Sep 02 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
Jan 22 Javascript
bootstrap中添加额外的图标实例代码
Feb 15 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
Mar 02 Javascript
详解vue-cli + webpack 多页面实例应用
Apr 25 Javascript
JS正则表达式验证中文字符
May 08 Javascript
微信小程序如何再次获取用户授权的方法
May 10 Javascript
JS实现仿微信支付弹窗功能
Jun 25 #Javascript
vue.js 实现输入框动态添加功能
Jun 25 #Javascript
vue-router重定向不刷新问题的解决
Jun 25 #Javascript
JavaScript实现封闭区域布尔运算的示例代码
Jun 25 #Javascript
详解React之父子组件传递和其它一些要点
Jun 25 #Javascript
Vue EventBus自定义组件事件传递
Jun 25 #Javascript
一个Vue页面的内存泄露分析详解
Jun 25 #Javascript
You might like
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
php调用Google translate_tts api实现代码
2013/08/07 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
php 利用array_slice函数获取随机数组或前几条数据
2015/09/30 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
Vue.use()在new Vue() 之前使用的原因浅析
2019/08/26 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
pyx文件 生成pyd 文件用于 cython调用的实现
2021/03/04 Python
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
管理科学大学生求职信
2013/11/13 职场文书
个人自我评价范文
2014/02/05 职场文书
企业安全生产标语
2014/06/06 职场文书
计算机求职信
2014/07/02 职场文书
安全员岗位职责
2015/02/10 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
python not运算符的实例用法
2021/06/30 Python