使用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 相关文章推荐
js控制框架刷新
Aug 01 Javascript
JQuery Tips(2) 关于$()包装集你不知道的
Dec 14 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
Mar 04 Javascript
在JS数组特定索引处指定位置插入元素
Jul 27 Javascript
jQuery中Ajax的load方法详解
Jan 14 Javascript
javascript判断网页是关闭还是刷新
Sep 12 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
Jan 13 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
Apr 29 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
Jan 10 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
Sep 19 Javascript
pm2 部署 node的三种方法示例
Oct 20 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
May 11 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
php中echo()和print()、require()和include()等易混淆函数的区别
2012/02/22 PHP
用php实现选择排序的解决方法
2013/05/04 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
ASP中Sub和Function的区别说明
2020/08/30 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
原生js制作日历控件实例分享
2016/04/06 Javascript
JavaScript中windows.open()、windows.close()方法详解
2016/07/28 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
理解 JavaScript EventEmitter
2018/03/29 Javascript
php结合js实现多条件组合查询
2019/05/28 Javascript
layui实现三级联动效果
2019/07/26 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2018/04/09 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
Python过滤序列元素的方法
2020/07/31 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
HTML5未来发展趋势
2016/02/01 HTML / CSS
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
英语系毕业生自荐信
2013/10/31 职场文书
2014年大学生自我评价
2014/01/19 职场文书
党的生日活动方案
2014/08/15 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
保证金退回承诺函格式
2015/01/21 职场文书
2015年教研员工作总结
2015/05/26 职场文书
微信早安问候语
2015/11/10 职场文书
Vue通过懒加载提升页面响应速度
2021/05/10 Vue.js