使用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 相关文章推荐
把textarea中字符串里含有的回车换行替换成&amp;lt;br&amp;gt;的javascript代码
Apr 20 Javascript
自己的js工具 Cookie 封装
Aug 21 Javascript
jquery插件 cluetip 关键词注释
Jan 12 Javascript
JQuery通过Ajax提交表单并返回结果
Jul 31 Javascript
JavaScript 性能优化小结
Oct 12 Javascript
jquery模拟多级复选框效果的简单实例
Jun 08 Javascript
node.js操作mysql简单实例
May 25 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
Jun 28 Javascript
LayerClose弹窗关闭刷新方法
Aug 17 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
May 20 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
Aug 07 Javascript
如何在vue中使用video.js播放m3u8格式的视频
Feb 01 Vue.js
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 操作文件的一些FAQ总结
2009/02/12 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
php快速查找数据库中恶意代码的方法
2015/04/01 PHP
PHP数据库操作Helper类完整实例
2016/05/11 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
关于jQuery中的end()使用方法
2011/07/10 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
2013/02/22 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
python抓取网页内容示例分享
2014/02/24 Python
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
python调用系统ffmpeg实现视频截图、http发送
2018/03/06 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
numpy按列连接两个维数不同的数组方式
2019/12/06 Python
Matlab中plot基本用法的具体使用
2020/07/17 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
建筑专业自荐信
2013/10/18 职场文书
电子商务毕业生求职信
2013/11/10 职场文书
学年个人总结范文
2015/03/05 职场文书
特此通知格式
2015/04/27 职场文书
2015年市场部工作总结
2015/04/30 职场文书
mysql主从复制的实现步骤
2021/10/24 MySQL
Nginx工作模式及代理配置的使用细节
2022/03/21 Servers
python pygame 开发五子棋双人对弈
2022/05/02 Python