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过渡和动画那些事的更多相关文章

  1. Vue API 4 (过渡和动画)

    transition name 用于自动生成 CSS 过渡类名.例如:name: fade 将自动拓展为 .fade-enter ,.fade-enter-active等.默认类名为 "v& ...

  2. 047——VUE中css过渡动作实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 在vue中同时使用过渡和动画

    在上次的动画中,在显示和隐藏有动画效果,但是,刷新页面的时候,第一次的显示没有动画效果 需求:刷新页面的时候也有动画效果 <transition name='fade' appear enter ...

  4. CSS过渡、动画及变形的基本属性与运用

    [逆战班] 动画可以让一个元素具有动态的效果,这个过程是使元素从一种样式变成另一个样式的过程.我们可以通过设置关键帧的方法来控制动画在某个时间节点的运动方式.通常设置多个节点来实现复杂的动画效果.0% ...

  5. Vue过渡效果之CSS过渡

    前面的话 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.本文将从CSS过渡transition.CSS动画animation及配合使用第三方CSS动画库(如animate. ...

  6. Vue过渡与动画

    通过 Vue.js 的过渡系统,可以在元素从 DOM 中插入或移除时自动应用过渡效果.Vue.js 会在适当的时机为你触发 CSS 过渡或动画,你也可以提供相应的 JavaScript 钩子函数在过渡 ...

  7. 058_末晨曦Vue技术_过渡 & 动画之过渡的类名

    进入/离开 & 列表过渡 点击打开视频讲解更加详细 概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class ...

  8. 过渡与动画 - steps调速函数&CSS值与单位之ch

    写在前面 上一篇中我们熟悉五种内置的缓动曲线和(三次)贝塞尔曲线,并且基于此完成了缓动效果. 但是如果我们想要实现逐帧动画,基于贝塞尔曲线的调速函数就显得有些无能为力了,因为我们并不需要帧与帧之间的过 ...

  9. Vue入门笔记#过渡

    Vue过渡,可以在元素从DOM中移除,插入时自动调用过渡效果.根据设定,会适时的触发过渡效果. 在使用的目标标签里添加 transition: <div transition="my_ ...

随机推荐

  1. androidcarsh

    package com.oval.cft; import java.io.File;import java.io.FileOutputStream;import java.io.PrintWriter ...

  2. webstorm出现黑色块光标

    取消掉此项对勾即可

  3. mobile webiste 中的css的font-size em及line-height等换算

    在mobile web设计 中,我们常常需要使用em这个字体大小的单位.em到底是多少呢? em到底应该设置为多少个em呢?通常换算成方法是1em=target fontsize we want/fo ...

  4. C++ inheritance: public, private. protected ZZ

    公有继承(public).私有继承(private).保护继承(protected)是常用的三种继承方式. 1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时, ...

  5. M-wordL-图

    典型的需要使用图模型 将start 和 end 以及字典一同构建成图,然后探究从start到end的最短路径

  6. yii2.0 Activeform表单部分组件使用方法 [ 2.0 版本 ]

    文本框:textInput(); 密码框:passwordInput(); 单选框:radio(),radioList(); 复选框:checkbox(),checkboxList(); 下拉框:dr ...

  7. easyui学习笔记11—tab标签页和鼠标动作

    这篇我们看看标签页是怎么实现的,默认情况下要靠点击切换标签,也可以用鼠标切换标签选项,就是鼠标放在标签上切换. 首先看看引用的资源文件 1.资源文件 <head> <meta cha ...

  8. 一个asp.net小项目总结

    写这篇文章之前先吐槽一下,最近换了一个公司,是给一个国企做外包,有两个月了,感觉这里的气氛有点不爽,还有点怀念以前的公司.具体听我说来,这里有几个团队,.net,java,手机开发,.net只有6个人 ...

  9. Wifi密码破解

    Wifi密码破解1:通过字典(暴力)破解WIFI密码   简单破解WEP/WPA/WPA2加密的WIFI密码,平台kali-linux 工具:Aircrack-ng 过程很简单:先抓含有正确密码的握手 ...

  10. 字符串拼接+和concat的区别

    +和concat都可以用来拼接字符串,但在使用上有什么区别呢,先来看看这个例子. public static void main(String[] args) { // example1 String ...