vue过滤动画
一.使用<transition name="fade"></transition>标签
name="fade", 是创建个fade的类名写在css中
- CSS: 在进入/离开的过渡中,会有 6 个 class 切换。
- v-enter:定义进入过渡的开始状态。在元素被插入时生效,在下一个帧移除。
- v-enter-active:定义过渡的状态。在元素整个过渡过程中作用,在元素被插入时生效,在 transition/animation 完成之后移除。这个类可以被用来定义过渡的过程时间,延迟和曲线函数。
- v-enter-to: 2.1.8版及以上 定义进入过渡的结束状态。在元素被插入一帧后生效 (与此同时 v-enter 被删除),在 transition/animation 完成之后移除。
- v-leave: 定义离开过渡的开始状态。在离开过渡被触发时生效,在下一个帧移除。
- v-leave-active:定义过渡的状态。在元素整个过渡过程中作用,在离开过渡被触发后立即生效,在 transition/animation 完成之后移除。这个类可以被用来定义过渡的过程时间,延迟和曲线函数。
- v-leave-to: 2.1.8版及以上 定义离开过渡的结束状态。在离开过渡被触发一帧后生效 (与此同时 v-leave 被删除),在 transition/animation 完成之后移除。
vue动画显示class机制
<p v-if="show" class="detial" >hello</p>
- 1.先添加fade-enter类 // 初始状态
- <p v-if="show" class="detial fade-enter" >hello</p>
- 2.再添加fade-enter-active // 变化状态
- <p v-if="show" class="detial fade-enter fade-enter-active" >hello</p>
- 3.再添加fade-enter-to, 删除fade-enter // 变化后的状态
- <p v-if="show" class="detial fade-enter-active fade-enter-to" >hello</p>
- 4.再逐步删除fade-enter-to fade-enter-active
- <p v-if="show" class="detial" >hello</p>
二.动画例子
html
<transition name="fade">
<p v-if="show" class="detial" >hello</p>
</transition>
css
.detial{width:300px;height:300px;background:red;}
// 过渡条件
.fade-enter-active, .fade-leave-active {
transition: all .3s ease;
}
// 开始结束状态
.fade-enter, .fade-leave-to{ /* .fade-leave-active below version 2.1.8 */
width:100px;height:100px;
opacity: 0;
}
// fade-leave-to可以换fade-leave-active, 在2.18以下版本
三.动画可以在属性中声明 JavaScript 钩子
<transition
//1.动画进入之前
v-on:before-enter="beforeEnter" //2.动画进入
v-on:enter="enter" //3.动画进入之后
v-on:after-enter="afterEnter" //动画进入时取消
v-on:enter-cancelled="enterCancelled" //4.动画消失之前
v-on:before-leave="beforeLeave" //5.动画消失
v-on:leave="leave" //6.动画消失之后
v-on:after-leave="afterLeave" //动画消失时取消
v-on:leave-cancelled="leaveCancelled"
>
<!-- ... -->
</transition>
四.JavaScript 钩子的进程
<template>
<div id="app">
<input type="button" value="点击显示隐藏" @click="show=!show">
<transition name="fade"
@before-enter="beforeEeter"
@enter="enter"
@after-enter="afterEnter"
@enter-cancelled="enterCancelled"
@before-leave="beforeLeave"
@leave="leave"
@after-leave="afterLeave"
@leave-cancelled="leaveCancelled"
>
<div class="detial" v-show="show"></div>
</transition>
</div>
</template>
css
<style>
.detial{width:300px;height:300px;background:red;}
.fade-enter-active, .fade-leave-active {
transition: all 5s ease;
}
.fade-enter, .fade-leave-active{
width:100px;height:100px;
opacity: 0;
}
</style>
vue.js
<script>
export default {
name: 'app',
data () {
return {
show: false,
msg: 'Welcome to Your Vue.js App'
}
}, methods: {
beforeEeter(){
console.log("1.动画进入之前")
},
enter(){
console.log("2.动画进入...")
},
afterEnter(){
console.log("3.动画进入之后")
},
enterCancelled(){
console.log("动画进入时取消")
},
beforeLeave(){
console.log("4.动画消失之前")
},
leave(){
console.log("5.动画消失...")
},
afterLeave(){
console.log("6.动画消失之后")
},
leaveCancelled(){
console.log("动画消失时取消")
}
}
}
</script>
五.结合animate.css来使用
引入animate.css, 可以通过 bower 下载
$ bower install animate.css
<link rel="stylesheet" href="bower_components/animate.css/animate.css">
npm下载
npm install animate.css --save
HTML, transition中必须添加animated类名
<template>
<div id="app">
<input type="button" value="点击显示隐藏" @click="show=!show">
<transition
enter-active-class="animated zoomInLeft"
leave-active-class="animated zoomOutRight"
>
<div class="detial" v-show="show"></div>
</transition>
</div>
</template>
控制时间快慢
<style lang="stylus" scoped>
.animated {animation-duration: 0.5s;}
</style>
六.多个元素一起运动
<transition-group></transition-group>
1.默认为一个 <span>包裹多个元素, 通过 tag 来改变: tag="div"
2.总是需要 提供唯一的 key 属性值" :key="1", v-bind:key="2"
<template>
<div id="app">
<input type="button" value="点击显示隐藏" @click="show=!show">
<transition-group tag="div"
enter-active-class="animated zoomInLeft"
leave-active-class="animated zoomOutRight"
>
<div class="detial" v-show="show" :key="1"></div>
<div class="detial" v-show="show" :key="2"></div>
</transition-group>
</div>
</template>
多个元素一起运动例子
<div id="box">
<input type="text" v-model="show"> <transition-group enter-active-class="zoomInLeft" leave-active-class="zoomOutRight">
<p v-show="show" class="animated" v-for="(val,index) in lists" :key="index">
{{val}}
</p>
</transition-group>
</div>
js
new Vue({
el:'#box',
data:{
show:'',
list:['apple','banana','orange','pear']
},
computed:{
lists:function(){
var arr=[];
this.list.forEach(function(val){
if(val.indexOf(this.show)!=-1){
arr.push(val);
}
}.bind(this));
return arr;
}
}
});
vue过滤动画的更多相关文章
- Vue.js 第3章 axios&Vue过渡动画
promise 它将我们从回调地狱中解脱出来 创建和使用 var fs = require('fs') // 创建promise // reslove表示执行成功后调用的回调函数 // reject表 ...
- 从零开始学 Web 之 Vue.js(五)Vue的动画
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- vue 的动画
1.vue 的动画流程分为enter,和leave分别对应以下两幅图 <!doctype html><html lang="en"><head> ...
- 049——VUE中使用animation与transform实现vue的动画效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue的动画组件(transition)
当插入或删除包含在 transition 组件中的元素时,Vue 将会做以下处理: 自动嗅探目标元素是否应用了 CSS 过渡或动画,如果是,在恰当的时机添加/删除 CSS 类名. v-enter: 定 ...
- vue学习指南:第十篇(详细) - Vue的 动画
Vue 提供了一些不同的过度效果,主要根 v-if v-show 动态组件 1. Vue给动画分了6个过程,在css中,扮演6个类, 1. .v-enter定义动画的开始状态 2. .v-ente ...
- Vue.js 动画
transition 动画: 当插入或删除包含在 transition 组件中的元素时,Vue将会做以下处理: 1.自动嗅探目标元素是否应用了css过滤或动画,如果是,在恰当的时机添加/删除c ...
- Vue.js动画在项目使用的两个示例
欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 李萌,16年毕业,Web前端开发从业者,目前就职于腾讯,喜欢node.js.vue.js等技术,热爱新技术,热 ...
- [原]浅谈vue过渡动画,简单易懂
在vue中什么是动画 开始先啰嗦一下,动画的解释(自我理解
随机推荐
- UGUI之控件以及按钮的监听事件系统
using UnityEngine; using System.Collections; using UnityEngine.EventSystems; public class EventTrigg ...
- 设计模式之初识IoC/DI(六)
本篇和大家一起学习IoC和DI即控制反转和依赖注入. 当然听上去这词语非常的专业,真不知道是怎么组出来的,看上去难归看上去难,但稍微理解一下也就这么回事了. 首先我们要明白IoC/DI干嘛用的,不然别 ...
- jsp+springmvc实现文件上传、图片上传和及时预览图片
1.多文件上传:http://blog.csdn.net/a1314517love/article/details/24183273 2.单文件上传的简单示例:http://blog.csdn.net ...
- 消息中间件的意义和应用场景 (activeMq)
消息中间件一般两个功能,解耦和异步处理,分别举个例子吧 解耦合:比如我们做一个微博产品中的好友系统,就很需要使用消息中间件当我们添加一个关注的时候, 涉及以下几个子系统 推荐系统,需要根据你关注的人给 ...
- javascript消除字符串两边空格的两种方式,面向对象和函数式编程。python oop在调用时候的优点
主要是javascript中消除字符串空格,比较两种方式的不同 //面向对象,消除字符串两边空格 String.prototype.trim = function() { return this.re ...
- nodejs与Promise的思想碰撞
玩node的同志们都知道,当这门语言被提出来的时候,作为自己最为骄傲的异步机制,却被PHP和Python等战团喷得不成样子的是,他们嘲笑着nodejs那蠢蠢的无限嵌套,nodejs战团只能以我们只要性 ...
- 九个PHP很有用的功能
1. 函数的任意数目的参数 你可能知道PHP允许你定义一个默认参数的函数.但你可能并不知道PHP还允许你定义一个完全任意的参数的函数 下面是一个示例向你展示了默认参数的函数: // 两个默认参数的函数 ...
- InnoDB锁问题 & DB事务隔离级别
<参考:http://www.cnblogs.com/jack204/archive/2012/06/09/2542940.html>InnoDB行锁实现方式InnoDB行锁是通过给索引上 ...
- 02-centOS6.7安装
CentOS6.5在VMware10中安装 1.启动VMware的画面 2.点击File--->New Virtual Machine 创建一台新虚拟机 3.在弹出框中选择典型安装 4.选择I ...
- iOS - 解决Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named
1 本来cocopods没有问题,最近创建项目,利用cocopods导入第三方库的时候,出现如下错误: [!] Unable to add a source with url `https://gi ...