使用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 相关文章推荐
用CSS+JS实现的进度条效果效果
Jun 05 Javascript
javascript 仿QQ滑动菜单效果代码
Sep 03 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
May 29 Javascript
jQuery实现预加载图片的方法
Mar 17 Javascript
Vue.JS入门教程之事件监听
Dec 01 Javascript
在Js页面通过POST传递参数跳转到新页面详解
Aug 25 Javascript
详解PHP后期静态绑定分析与应用
Mar 21 Javascript
详解vue配置后台接口方式
Mar 29 Javascript
微信小程序合法域名配置方法
May 06 Javascript
Vue中props的详解
May 16 Javascript
vue+element实现打印页面功能
May 20 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
Jul 20 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
无线电的诞生过程
2021/03/01 无线电
PHP调用三种数据库的方法(3)
2006/10/09 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
PHP基于新浪IP库获取IP详细地址的方法
2017/05/04 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
js 金额文本框实现代码
2012/02/14 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
Vue内部渲染视图的方法
2019/09/02 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
Python实例之wxpython中Frame使用方法
2014/06/09 Python
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
pandas表连接 索引上的合并方法
2018/06/08 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
python快排算法详解
2019/03/04 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
人事专员工作职责
2014/02/22 职场文书
家长写给孩子的评语
2014/04/18 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
2015年药房工作总结
2015/04/25 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书
Redis数据同步之redis shake的实现方法
2022/04/21 Redis
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP