Vue——关于css过渡和动画那些事
1. 单元素/组件的过渡transition
Vue 提供了 transition
的封装组件,在下列情形中,可以给任何元素和组件添加进入/离开过渡
- 条件渲染 (使用
v-if
) - 条件展示 (使用
v-show
) - 动态组件
- 组件根节点
实例:
- <style>
- .fade-enter,.fade-leave-to{
- opacity: 0;
- }
- .fade-enter-active,.fade-leave-active{
- transition: opacity .5s;
- }
- </style>
- <!-- fade是自定义的名称,会被当成类的前缀 "fade-enter" -->
<div id="app">- <transition name="fade">
- <div v-if="show"><h1>show</h1></div>
- </transition>
- <button @click="handleChange">change</button>
- </div>
- <script>
- new Vue({
- el: '#app',
- data:{
- show: true
- },
- methods:{
- handleChange:function(){
- this.show = !this.show;
- }
- }
- })
- </script>
2. 过渡的类名
在进入/离开的过渡中,会有 6 个 class 切换:v-enter 、v-enter-active、v-enter-to、v-leave、v-leave-active、v-leave-to
关于过渡类名:
如果你使用一个没有名字的 <transition>
,则 v-
是这些类名的默认前缀。
如果你使用了 <transition name="my-transition">
,那么 v-enter
会替换为 my-transition-enter
3. 关于@keyframe 动画 (此处省略)
4. VUE中使用第三方animate.css 库, (animate.css库提供的动画是@keyframe的Css3的动画)
首先link引入animate.css,然后结合自定义过渡的类名 enter-active-class、leave-active-class,
animated是必须要写的,hinge shake是引入的动画效果
- <div id="app">
- <transition enter-active-class="animated hinge" leave-active-class="animated shake">
- <div v-if="show">show</div>
- </transition>
- <button @click="handleChange">change</button>
- </div>
- <script>
- new Vue({
- el: '#app',
- data:{
- show: true
- },
- methods:{
- handleChange:function(){
- this.show = !this.show;
- }
- }
- })
- </script>
5. 如何在页面加载完成后元素第一次显示时也具备动画效果?
使用appear 和 appear-active-class
- <div id="app">
- <transition
- appear
- enter-active-class="animated swing fade-enter-active"
- leave-active-class="animated shake fade-leave-active"
- appear-active-class="animated swing">
- <div v-if="show">show</div>
- </transition>
- <button @click="handleChange">change</button>
- </div>
6. 同时使用过渡和动画
- <style>
- .fade-enter,.fade-leave-to{
- opacity: 0;
- }
- .fade-enter-active,
- .fade-leave-active{
- transition: opacity 3s;
- }
- </style>
- <div id="app">
- <transition
- :duration="{enter:5000, leave:10000}" //duration设置动画时间
- name="fade"
- appear
- enter-active-class="animated swing fade-enter-active"
- leave-active-class="animated shake fade-leave-active"
- appear-active-class="animated swing">
- <div v-if="show"><h3>show</h3></div>
- </transition>
- <button @click="handleChange">change</button>
- </div>
- <script>
- new Vue({
- el: '#app',
- data:{
- show: true
- },
- methods:{
- handleChange:function(){
- this.show = !this.show;
- }
- }
- })
- </script>
7. Vue中多个元素或组件的过渡
- 多个元素的过渡
先上例子:2个元素切换过渡效果
- <style>
- .v-enter,.v-leave-to{
- opacity: 0;
- }
- .v-enter-active,.v-leave-active{
- transition: opacity .5s;
- }
- </style>
- <div id="app">
<!-- 这有2个div,点击按钮切换显示div内容,
但是需要注意:VUE默认会复用dom元素,导致过渡效果不显示,
解决: 添加唯一值key属性可以标识独立的dom,避免复用
mode是transition自带的属性,可以是out-in 或者 in-out -->- <transition mode="out-in">
- <div v-if="show" key="hello">hello vue</div>
- <div v-else key="Bye">Bye Vue</div>
- </transition>
- <button @click="handleClick">change</button>
- </div>
- <script>
- var vm = new Vue({
- el: '#app',
- data:{
- show: true
- },
- methods:{
- handleClick:function(){
- this.show = !this.show;
- }
- }
- })
- </script>
- 多个组件的过渡
- <style>
- .v-enter,.v-leave-to{
- opacity: 0;
- }
- .v-enter-active,.v-leave-active{
- transition: opacity .5s;
- }
- </style>
- <div id="app">
- <transition mode="in-out">
- <!-- <child v-if="show"></child>
- <child-one v-else></child-one> -->
- <!-- 动态组件 -->
- <component :is="type"></component>
- </transition>
- <button @click="handleClick">change</button>
- </div>
- <script>
- Vue.component('child',{
- template: '<div>child</div>'
- });
- Vue.component('child-one',{
- template: '<div>child-one</div>'
- })
- var vm = new Vue({
- el: '#app',
- data:{
- type: 'child'
- },
- methods:{
- handleClick:function(){
- this.type = (this.type === 'child'?'child-one' : 'child');
- }
- }
- })
- </script>
8. 列表过渡使用 transition-group
- <div id="app">
- <transition-group>
- <div v-for="item of list" :key="item.id">
- {{item.title}}-{{item.id}}
- </div>
- </transition-group>
- <button @click="handleAdd">Add</button>
- </div>
- <style>
- .v-enter,.v-leave-to{
- opacity: 0;
- }
- .v-enter-active,.v-leave-active{
- transition: opacity 1s;
- }
- </style>
- <script>
- var count = 0;
- new Vue({
- el: '#app',
- data:{
- list:[]
- },
- methods:{
- handleAdd:function(){
- this.list.push({
- id: count++,
- title: 'hello vue'
- })
- }
- }
- })
- </script>
Vue——关于css过渡和动画那些事的更多相关文章
- Vue API 4 (过渡和动画)
transition name 用于自动生成 CSS 过渡类名.例如:name: fade 将自动拓展为 .fade-enter ,.fade-enter-active等.默认类名为 "v& ...
- 047——VUE中css过渡动作实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 在vue中同时使用过渡和动画
在上次的动画中,在显示和隐藏有动画效果,但是,刷新页面的时候,第一次的显示没有动画效果 需求:刷新页面的时候也有动画效果 <transition name='fade' appear enter ...
- CSS过渡、动画及变形的基本属性与运用
[逆战班] 动画可以让一个元素具有动态的效果,这个过程是使元素从一种样式变成另一个样式的过程.我们可以通过设置关键帧的方法来控制动画在某个时间节点的运动方式.通常设置多个节点来实现复杂的动画效果.0% ...
- Vue过渡效果之CSS过渡
前面的话 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.本文将从CSS过渡transition.CSS动画animation及配合使用第三方CSS动画库(如animate. ...
- Vue过渡与动画
通过 Vue.js 的过渡系统,可以在元素从 DOM 中插入或移除时自动应用过渡效果.Vue.js 会在适当的时机为你触发 CSS 过渡或动画,你也可以提供相应的 JavaScript 钩子函数在过渡 ...
- 058_末晨曦Vue技术_过渡 & 动画之过渡的类名
进入/离开 & 列表过渡 点击打开视频讲解更加详细 概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class ...
- 过渡与动画 - steps调速函数&CSS值与单位之ch
写在前面 上一篇中我们熟悉五种内置的缓动曲线和(三次)贝塞尔曲线,并且基于此完成了缓动效果. 但是如果我们想要实现逐帧动画,基于贝塞尔曲线的调速函数就显得有些无能为力了,因为我们并不需要帧与帧之间的过 ...
- Vue入门笔记#过渡
Vue过渡,可以在元素从DOM中移除,插入时自动调用过渡效果.根据设定,会适时的触发过渡效果. 在使用的目标标签里添加 transition: <div transition="my_ ...
随机推荐
- C# Winform DataGridView获取单元格的值
1,可以直接通过DataGridView的重载运算符[]直接获取 使用方法: dataGridView[columnIndex][rowsIndex].Value.ToString().//colum ...
- 【转】iOS lame编译 arm64 armv7s armv7 x86_64 i386指令集
原文出至 http://blog.csdn.net/vieri_ch/article/details/40650467 最近升级了系统到Mac OS X 10.10 并且更新了XCode6.1和iOS ...
- ado.net c#基本的增加,修改,删除,查询
自己初次学习用的,各种不规范,注释没写 class AdoDemo { static string strConn = @"Data Source=server1;Initial Catal ...
- webstorm中使用git
webstorm中使用git将代码放入tfs两种方式: 直接在tfs上建立仓库,复制仓库地址,然后在本地打开webstorm,然后git克隆这个仓库 使用git命令将本地项目上传到tfs git re ...
- centos aws 修改使用密码ssh登录
因为使用pem登录有很多局限性,在此修改为用密码但不是root登录 1.关闭selinux(要重启) vi /etc/selinux/config SELINUX=disabled 2.重置root密 ...
- 安装Access Database Engine后,提示未注册Microsoft.ACE.OLEDB.12.0
未注册Microsoft.ACE.OLEDB.12.0 ,下载安装 Microsoft Access Database Engine:https://www.microsoft.com/en-us/d ...
- CASE表达式
一.简介 官方定义CASE是一种表达式,它基于某种格式,按照格式去编写表达式,其中表达式的逻辑是:指定特定的值与条件列表去匹配,返回对应的值. CASE表达式类似我们编程语言中的 if else 和 ...
- yii2.0查询关联数据以及widgets小部件
怎样去查询关联数据呢,接下来整理一个简单的代码:
- 稳定sqlplan方法
参考文档:SQLT (SQLTXPLAIN) - Tool that helps to diagnose SQL statements performing poorly [ID 215187.1]
- 【pbrt】在c++程序中使用pbrt进行渲染
近段时间做一个关于水面的动画.由于我用c++实现水面动画的,然而使用c++我自己的渲染系统渲染结果被同学说是可视化不叫渲染,所以我决定修改一下…… 恰好进来在学习pbrt,所以索性就蛋疼了考虑直接用p ...