hide show vue 动画_Vue2.x学习四:过渡动画

Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。

请注意它的应用场景

并不是说我们写了一个动画之后让它一直在动,而是在一个模块显示或隐藏的时候去做一种特效,使得它的过程有过渡性,而不是很突兀的直接消失或显示。

它适用的场景是v-if和v-show,动态组件,组件根节点。

具体实现有以下几种方式:

1)在 CSS 过渡和动画中自动应用 class

2)可以配合使用第三方 CSS 动画库,如 Animate.css

3)在过渡钩子函数中使用 JavaScript 直接操作 DOM

4)可以配合使用第三方 JavaScript 动画库,如 Velocity.js

下面我们通过一个例子来学习:

显示

隐藏

{{msg}}

new Vue({

el:'.container',

data:{

msg:'hello',

//定义它是否显示,默认情况下为false隐藏

isShow:false,

},

//在其中定义显示与隐藏两个方法

methods:{

// 要想动态的实现显示与隐藏,我们只要动态的改变isShow的状态

show(){

this.isShow=true;//当isShow为真,显示

},

hide(){

this.isShow=false;//当isShow为假,隐藏

}

}

});

它还有一种简便写法

切换

{{msg}}

new Vue({

el:'.container',

data:{

msg:'hello',

isShow:false,

}

});

我们可以看到,上面显示与隐藏的方式过于直接,此时我们可以为它创建动画效果。

css过渡

隐藏与显示的效果实现之后,我们来创建动画。

哪个部分要动态的显示与隐藏,我们给哪个部分加。

然后我们为它加特效。

加特效之前我们要知道,元素从开始显示到完全显示,开始隐藏到完全隐藏也要经历一些阶段,我们可以在这之中加入一些样式,就能达到一些效果。

我们可以通过一张图来说明:

v-enter:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。

v-enter-active:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。

v-enter-to: 定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter 被移除),在过渡/动画完成之后移除。

v-leave: 定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。

v-leave-active:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。

v-leave-to: 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave 被删除),在过渡/动画完成之后移除。

animate

/*开始显示*/

.v-enter{ opacity: 0; }

/*显示过程*/

.v-enter-active{ transition: opacity 1.5s;/*给transition加过渡特效(属性),持续时间为1.5秒*/ }

/*显示完毕*/

.v-enter-to{ opacity: 1; }

/*开始隐藏*/

.v-leave{ opacity: 1; }

/*隐藏过程*/

.v-leave-active{ transition: opacity 1.5s; }

/*隐藏完毕*/

.v-leave-to{ opacity: 0; }

切换

{{msg}}

new Vue({

el:'.container',

data:{

msg:'hello',

isShow:false,

}

});

css动画

相当于将css中的动画机制运用到vue中

animate

/*只在显示与隐藏的过程中定义动画,实现过渡效果*/

.v-enter-active {

animation-name: app;/*指定动画名称*/

animation-duration: 3s;/*定义时间*/

}

.v-leave-active {

animation-name: app;

animation-duration: 3s;

animation-direction: reverse;/*动画反向播放*/

}

/*定义动画效果*/

@keyframes app {

0% {

transform: scale(0);

}

50% {

transform: scale(1.5);

}

100%{

transform: scale(1);

}

}

切换

{{msg}}

new Vue({

el:'.container',

data:{

msg:'hello',

isShow:false,

}

});

我们有的时候可能不太能写好keyframes,这个时候我们可以引用别人封装好的动画库,那么我们自己就不用写keyframes了。

下面我们来看看如何在vue中引入animate.css动画库。

css动画库

上面两种方式,我们只是为特效元素添加transition标签包裹,

而这种动画库的实现方式,我们需要为transition标签添加属性

vue中为我们提供了6个标签:

enter-class、enter-active-class、enter-to-class

leave-class、leave-active-class、leave-to-class

他们的优先级高于普通的类名,这对于 Vue 的过渡系统和其他第三方 CSS 动画库,如 Animate.css 结合使用十分有用。

animate

切换

{{msg}}

new Vue({

el:'.container',

data:{

msg:'hello',

isShow:false,

}

});

js动画库

这里我们用到了JavaScript 钩子。

它有以下几种钩子:

v-on:before-enter="beforeEnter"

v-on:enter="enter"

v-on:after-enter="afterEnter"

v-on:enter-cancelled="enterCancelled"

v-on:before-leave="beforeLeave"

v-on:leave="leave"

v-on:after-leave="afterLeave"

v-on:leave-cancelled="leaveCancelled"

>

要显示的内容

用法是在transition绑定函数,并在methods中定义

methods: {

// 进入

beforeEnter: function (el) {

// ...

},

// 此回调函数是可选项的设置

// 与 CSS 结合时使用

enter: function (el, done) {

// ...

done()

},

afterEnter: function (el) {

// ...

},

enterCancelled: function (el) {

// ...

},

// 离开

beforeLeave: function (el) {

// ...

},

// 此回调函数是可选项的设置

// 与 CSS 结合时使用

leave: function (el, done) {

// ...

done()

},

afterLeave: function (el) {

// ...

},

// leaveCancelled 只用于 v-show 中

leaveCancelled: function (el) {

// ...

}

}

实现动画的方式有2种,一种是jquery,一种是velocity。

此处我们以velocity为例

animate

切换

{{msg}}

new Vue({

el:'.container',

data:{

msg:'hello',

isShow:false,

},

methods:{

// 事件由vue来调用,它会给我们传两个参数:el(当前元素),done(函数执行完之后的回调)

enter(el,done){

//console.log(el);//[object HTMLDivElement]

//console.log(done);//function () {...}

/*

Velocity(要控制的元素,{动画样式},{动画配置})

动画样式,可以在http://www.mrfront.com/docs/velocity.js/plugins.html内置特效中寻找

*/

Velocity(el,"transition.fadeIn",{

// 动画配置项

duration:1000, //动画执行时间(单位毫秒)

complete:done // 动画结束时的回调函数,必须要写

/*其他参数

easing: "swing", // 缓动效果

queue: "", // 队列

begin: undefined, // 动画开始时的回调函数

progress: undefined, // 动画执行中的回调函数(该函数会随着动画执行被不断触发)

display: undefined, // 动画结束时设置元素的 css display 属性

visibility: undefined, // 动画结束时设置元素的 css visibility 属性

loop: false, // 循环

delay: false, // 延迟

mobileHA: true // 移动端硬件加速(默认开启)

*/

});

}

}

});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch cifar10离线加载二进制文件

说明直接离线加载cifar10到Pytorch 直接加载6个文件到pytorchdata_batch_1data_batch_2data_batch_3data_batch_4data_batch_5test_batchimport os import cv2 import pickle import numpy as np import matplotlib.pyplot as pltimport torchvision from torch.autograd impor…

spring cloud gateway 深入了解 - Predicate

文章来源 spring cloud gateway 通过谓词(Predicate)来匹配来自用户的请求 为了方便,使用postman测试不同的谓词的效果 路径谓词(Predicate)—— 最简单的谓词 配置如下spring:cloud:gateway:routes:# 匹配指定路径的路…

python漏洞检测脚本_URL重定向漏洞,python打造URL重定向漏洞检测脚本

前言:今天学习了重定向漏洞,这个漏洞比较好理解漏洞名:URL重定向漏洞威胁:低漏洞的来源:开发者对head头做好对应的过滤和限制例子:有漏洞的网站:http://a.com/x.php?urlhttp://a.com/login.php…

Pytorch cifar100离线加载二进制文件

说明:直接加载cifar100二进制文件到Pytorch 直接加载文件到pytorchmetatesttrain import os import cv2 import pickle import time import numpy as np import matplotlib.pyplot as pltimport torchvision from torch.autograd import Variable import torch.uti…

为单个Web应用程序配置多个上下文根– JBoss

有时&#xff0c;我们通过在jboss-web.xm l中定义一个来对应用程序进行更改&#xff0c;以支持利用JBoss功能的多个上下文根&#xff0c;如下所示&#xff1a; webapp / WEB-INF / jboss-web.xml&#xff1a; <?xml version"1.0" encoding"UTF-8"?&…

手动升级ubuntu 18.04内核从4.15.0-45-generic到4.15.0-52-generic

1 从下面官网下载相应的包&#xff0c;共3个。 https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.15-rc9/ linux-headers-4.15.0-041500rc9-generic_4.15.0-041500rc9.201801212130_amd64.deb linux-headers-4.15.0-041500rc9_4.15.0-041500rc9.201801212130_all.deb linux-…

cmd52命令发送 mmc_乾坤合一~Linux SD/MMC/SDIO驱动分析(上)

一、SD/MMC/SDIO概念区分SD(SecureDigital)与 MMC(MultimediaCard)SD 是一种 flash memory card 的标准&#xff0c;也就是一般常见的 SD 记忆卡&#xff0c;而 MMC 则是较早的一种记忆卡标准&#xff0c;目前已经被 SD 标准所取代。在维基百科上有相当详细的 SD/MMC 规格说明&…

Pytorch MNIST直接离线加载二进制文件到pytorch

说明&#xff1a;MNIST直接离线加载二进制文件到pytorch 直接以下4个文件读入数据到pytorch中t10k-images-idx3-ubyte.gzt10k-labels-idx1-ubyte.gztrain-images-idx3-ubyte.gztrain-labels-idx1-ubyte.gz import os import numpy as np import gzipimport torch.utils.data a…

爱与愁的心痛

爱与愁的心痛 题目链接 题意 这道题的题意是&#xff0c;给定一个整数数组&#xff0c;数组中的每个元素代表一个不爽的事情的刺痛值。现在需要找出连续m个刺痛值的和的最小值。 思路 读取输入和初始化遍历数组并计算窗口和输出最小和 坑点 数组越界重复计算窗口和 算法一&am…

begintrans返回值_SQL事务回滚 ADO BeginTrans, CommitTran 以及 RollbackTrans 方法

定义和用法这三个方法与 Connection 对象使用&#xff0c;来保存或取消对数据源所做的更改。注释&#xff1a;并非所有提供者都支持事务。注释&#xff1a;BeginTrans、CommitTrans 和 RollbackTrans 方法在客户端 Connection 对象上无效。那客户端不能支持事务? 这是什么意思…

Pytorch Fashion_MNIST直接离线加载二进制文件到pytorch

说明&#xff1a;Fashion_MNIST直接离线加载二进制文件到pytorch 将4个gz直接加载到pytoch用来训练t10k-images-idx3-ubyte.gzt10k-labels-idx1-ubyte.gztrain-images-idx3-ubyte.gztrain-labels-idx1-ubyte.gz import os import numpy as np import gzip import matplotlib.p…

jQuery选择器种类整理

选择器概念 jQuery选择器是通过标签、属性或者内容对HTML内容进行选择&#xff0c;选择器运行对HTML元素组或者单个元素进行操作。 jQuery选择器使用$符号&#xff0c;等同于jquery&#xff0c;例如&#xff1a; $(“li”) jquery(“li”) 同样等同于javascript中的&#xff1…

jee过滤器应用场景_将涡轮增压器添加到JEE Apps

jee过滤器应用场景我扮演的关键角色之一是在本地社区中传播Akka。 作为讨论的一部分&#xff0c;人们通常会想到的问题/疑问是Akka如何针对编写良好的Java / JEE应用程序提供更好的可伸缩性和并发性。 由于底层硬件/ JVM保持不变&#xff0c;因此参与者模型如何比传统的JEE应用…

mysql 列 随机数_mysql mmp 某字段插入随机数!(说不定那天就忘记了,存下来再说)...

UPDATE 表名 SET 字段名ceiling(rand()*500000500000) WHERE (条件);原文链接&#xff1a;http://blog.csdn.net/bobay/article/details/24797525MMP 上面的只能更新一条UPDATE 表名 SET 字段名cast(rand(checksum(newid()))*(24)1 as int) WHERE (条件);上面的就是每条都更新的…

适用于Java开发人员的Elasticsearch:Elasticsearch生态系统

本文是我们学院课程的一部分&#xff0c;该课程的标题为Java开发人员的Elasticsearch教程 。 在本课程中&#xff0c;我们提供了一系列教程&#xff0c;以便您可以开发自己的基于Elasticsearch的应用程序。 我们涵盖了从安装和操作到Java API集成和报告的广泛主题。 通过我们简…

matplotlib markers的类型

https://matplotlib.org/api/markers_api.html matplotlib markers 所有可能的markers定义如下: marker symbol description "." point "," pixel "o" circle "v" triangle_down "^" triangle_up &…

android实时声音信号波形_Android输出正弦波音频信号(左右声道对称)-阿里云开发者社区...

转载请说明出处&#xff01;作者&#xff1a;kqw攻城狮出处&#xff1a;个人站 | CSDN需求&#xff1a;左右声道分别输出不同的音频数据&#xff0c;波形要是一个正弦波&#xff0c;左右声道还要对称&#xff01;对硬件不是很了解&#xff0c;说是要通过音波避障。效果图之前已…

matplotlib color可选

matplotlib color matplotlib中color可用的颜色&#xff1a; cnames { aliceblue: #F0F8FF, antiquewhite: #FAEBD7, aqua: #00FFFF, aquamarine: #7FFFD4, azure: #F0FFFF, beige: #F5F5…

python之scrapy爬取jd和qq招聘信息

1、settings.py文件 # -*- coding: utf-8 -*-# Scrapy settings for jd project # # For simplicity, this file contains only settings considered important or # commonly used. You can find more settings consulting the documentation: # # https://doc.scrapy.org…

opencl 加速 c语言程序_Win10应用获得面向OpenCL和OpenGL的兼容层

今年早些时候&#xff0c;微软宣布正在努力在Windows 10的Direct3D 12(D3D12)中启用对OpenCL和OpenGL映射层的支持。为了启用映射层&#xff0c;解决设备上没有OpenCL和OpenGL硬件驱动时的兼容性问题&#xff0c;公司目前已经在微软商店中发布了兼容性包。该兼容性包的标题为 &…