Vue---过渡

先看一个典型的例子:

HTML:

<div id="app">
		<button @click="show=!show">切换</button>
		<transition name="fade">
			<p v-if="show">Hello</p>
		</transition>		
	</div>

JavaScript:

var app=new Vue({
			el: "#app",
			data: {
	                 show:true,
			},
		})

CSS:

 .fade-enter-active,.fade-leave-active{
           transition: opacity .5s;
		}
.fade-enter,.fade-leave-to{
		opacity: 0;
		}

此时点击切换,Hello就有点淡入淡出的效果了。


当插入或删除包含在 transition 组件中的元素时, Vue 将会做以下处理:

1.自动嗅探目标元素是否应用了CSS过渡或动画,如果是,在恰当的时机添加/删除 CSS 类名。

2.如果过渡组件提供了 JavaScript 钩子函数,这些钩子函数将会在恰当时机被调用。

3.如果没有找到 JavaScript 钩子并且也没有检测到 CSS 过渡/动画, DOM 操作(插入/删除)在下一帧中立即执行

过渡的类名

在进入(enter)/离开(leave)的过渡中,会有6个 class 切换。

扫描二维码关注公众号,回复: 3890208 查看本文章

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

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

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

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

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

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

官方文档给出的一张图很详细的描绘出这六种状态:

  

如果使用没有名字的<transition>,则v-是这些类名的默认前缀,如果有名字则为name-,这个例子为fade-

CSS过渡

我们可以定义不同的进入/离开状态来控制 CSS 过渡效果,例如:

/* 可以设置不同的进入和离开动画 */
/* 设置持续时间和动画函数 */
.slide-fade-enter-active {
  transition: all .3s ease;
}
.slide-fade-leave-active {
  transition: all .8s cubic-bezier(1.0, 0.5, 0.8, 1.0);
}
.slide-fade-enter, .slide-fade-leave-to
/* .slide-fade-leave-active for below version 2.1.8 */ {
  transform: translateX(10px);
  opacity: 0;
}
运用CSS3动画可以添加更多丰富的过渡效果

猜你喜欢

转载自blog.csdn.net/djz917/article/details/80704702