vue 动画
Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。
包括以下几种常见的方式:
- 在 CSS 过渡和动画中自动应用 class
- 可以配合使用第三方 CSS 动画库,如 Animate.css
- 在过渡钩子函数中使用 JavaScript 直接操作 DOM
附上官方的动画状态图:
说明:
v-enter
:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。v-enter-active
:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。v-enter-to
: 2.1.8版及以上 定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时v-enter
被移除),在过渡/动画完成之后移除。v-leave
: 定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。v-leave-active
:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。v-leave-to
: 2.1.8版及以上 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时v-leave
被删除),在过渡/动画完成之后移除。
一、使用css过渡动画
css部分:
<style>
/* v-enter 一个时间点,进入之前,元素其实状态,此时还没有进入 */
/* v-leave-to 时间点,动画离开之后,离开的种子状态,此时元素动画已经结束 */
.v-enter,
.v-leave-to
{
opacity:;
transform: translateX(150px)
}
/* v-enter-active 入场动画时间段 */
/* v-leave-active 离场动画时间段 */
.v-enter-active,
.v-leave-active{
/* 让动画有个过渡的渐变效果 */
transition:all 0.4s ease;
}
HTML部分:
<div id="app">
<button type="button" @click="flag=!flag">切换</button> <!-- 1.使用transition标签包裹需要被动画控制得元素,vue提供 -->
<transition>
<p v-if="flag">这是个p标签</p>
</transition>
</div>
JS部分:
var app = new Vue({
el: "#app",
data() {
return {
message: 'hello!',
flag: false,
}
},
methods: {
sayHi() {
console.log("hello");
}
}
});
当然还可以自定义v-前缀,默认使用的是vue内置的类来控制transition标签的动画。
CSS部分:
/* 在 transition 标签中加个 name='my' 属性,可局部自定义动画 */
.my-enter,
.my-leave-to
{
opacity:;
transform: translateY(300px)
} .my-enter-active,
.my-leave-active{
/* 让动画有个过渡的渐变效果 */
transition:all 0.4s ease;
}
HTML部分:
<button type="button" @click="flag2=!flag2">切换2</button> <!-- 1.使用transition标签包裹需要被动画控制得元素,vue提供,加了个 name='my' -->
<transition name="my">
<p v-if="flag2">这是个p2标签</p>
</transition>
二、使用第三方css动画库实现
引入第三方动画库
<link rel="stylesheet" href="../lib/animate.css">
css部分不用自定义了..
HTML部分:
<button type="button" @click="flag=!flag">切换</button> <!-- 使用 :duration="毫秒值" 来控制进场和离场的时长 -->
<transition
enter-active-class="bounceIn"
leave-active-class="bounceOut"
:duration="{enter:200,leave:400}">
<p v-if="flag" class="animated">这是个p2标签</p>
</transition>
JS部分:
var app = new Vue({
el: "#app",
data() {
return {
message: 'hello!',
flag: false,
flag2: false
}
},
methods: {
sayHi() {
console.log("hello");
}
}
});
四、使用js钩子函数实现
需求:点击 【切换】 按钮,一个黄色的小球会从(0,0)位置移动到(150px,450px)位置中去然后消失。
CSS部分:
<style>
.ball{
width:30px;
height:30px;
border-radius: 50%;
background-color: yellow;
}
</style>
HTML部分:
<div id="app">
<button type="button" @click="flag=!flag">切换</button> <transition @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter">
<div v-if="flag" class="ball"></div>
</transition>
</div>
JS部分:
var app = new Vue({
el: "#app",
data() {
return {
flag: false,
}
},
methods: {
beforeEnter(el) {
console.log("beforeEnter")
el.style.transform = "translate(0,0)";
},
enter(el, done) { console.log("enter")
// 强制动画的使用
el.offsetWidth
el.style.transform = "translate(150px,450px)"
el.style.transition = "all 1s ease" // 这个done就是afterEnter的函数引用
done()
},
afterEnter(el) {
console.log("afterEnter")
this.flag = !this.flag;
}
}
});
vue 动画的更多相关文章
- vue动画的用法
vue动画 在vue.js中有两种写动画的方法,第一种就是像js里一样,用原生代码来实现,第二种则是使用animate.css的动画类文件,这个动画类和bootstrap.css文件类似,直接调用类就 ...
- vue动画及其原理
1,vue动画的实现原理,主要是通过在不同时期给需要动画的dom元素加上css动画样式 我们以显示和隐藏动画为例 a, 需要动画的dom元素 b,点击时vue控制往vue中加的样式 2, 我们以两张 ...
- vue教程3-02 vue动画
vue教程3-02 vue动画 以下代码,已经用包管理器下载好vue,animate <!DOCTYPE html> <html lang="en"> &l ...
- vue动画实现方式
vue动画实现方式 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=&q ...
- vue动画理解,进入、离开、列表过度和路由切换。
vue的动画对于很多初学者,甚至对很多老鸟来说也是很费劲,不容易控制的. 这篇文章讲vue动画的理解.其实没那么难. 动画理解 一个元素从A状态变成B状态,如果这个过程通过某种方式反应在视图上了,那么 ...
- Vue动画操作
概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animate.c ...
- vue 动画原理 part1
Vue动画原理 增加和删除css增加样式实现一个过渡效果也就是动画效果 1.需要动画效果的标签外包裹一个transition标签 会被自动分析css样式,然后自动构建一个动画流程 transition ...
- Javascript - Vue - 动画
动画状态类名 vue动画通过将需要执行动画的标签放入transition标签中,再通过设置预置的vue动画类名的css样式来控制动画的呈现效果. 开场动画状态的三个类名 v-enter:动画开始之前的 ...
- 15.vue动画& vuex
Vue.config.productionTip = false; ==是否显示提示信息== ==import/export== export xxx 必须跟跟对象或者和定义一起 对象: export ...
- vue动画
最近想搞搞vue的过渡和动画,以为照着官网写就好了,谁知道还是出现一些状况 具体表现就是不用webpack打包时候写的过渡是正常的,而用了webpack打包就不正常了 说使用了未定义的element: ...
随机推荐
- jQuery.fn.extend()
jQuery.fn.extend() extend()方法是定义在jQuery构造函数的prototype对象上面的一个方法,这样做就能使得所有jQuery对象的实例都能共享这个方法.jQuery构造 ...
- Android利用fidller进行网络抓包
http://www.oschina.net/question/221817_129716?fromerr=z7ZX9oZR http://www.trinea.cn/android/android- ...
- smtp outlook邮件发送非授权码模式
1.起因:send fail SMTP AUTH extension not supported by server. 使用端口25 和587均失效出现此问题 首先前往outlook修改设置pop和I ...
- 在ubuntu中添加widows启动项的简单方法
打开终端执行: sudo vim /boot/grub/grub.cfg 或者 sudo gedit /boot/grub/grub.cfg 打开文件grub.cfg. 在文件中添加:添加的时候注意和 ...
- 通过条件注解@Conditional细粒度的选择bean实例
在进行spring进行开发时,当某个接口有多种实现方式并且我们只想让一种生效时,比如声明如下一个接口和两个实现: public interface LanggageService { String s ...
- helm-locate 使用 everything
emacs里不需任何设置,只要在电脑的环境变量里加上everything的目录即可. 1.下载es.exe (http://www.voidtools.com/es.zip) 2.把解压出的es.ex ...
- img底边空隙问题原因和解决方案(修改)
转载自:http://www.cnblogs.com/minelucky/p/4746071.html 练习切图时发现img和父级div之间总是有2px空隙(chrome),上网搜索解决. 图 ...
- jquery,字符串转json对象,json对象转字符串
字符串转json对象 方法一:var json = eval('(' + str + ')'); 方法二:return JSON.parse(str); json对象转字符串 JSON.stringi ...
- Linux学习笔记(第五章)
第五章-常用指令 下达指令: 1.[Tab] 2.man + (指令):显示操作说明 开头代号 man page 常用按键
- git merge的使用
在实际开发中经常会用到git merge操作.但很多情况下我们并不想合并后直接提交,这里介绍git merge的两个常用参数: --no-commit --no-commit 参数使得合并后,为了防止 ...