当前位置: 首页 > 工具软件 > Velocity.js > 使用案例 >

19 Vue中的 Js 动画与 Velocity.js 的结合

李明贤
2023-12-01

一、前期准备使用@before-enter="handleBeforeEnter"
//handleEnter 比handleBeforeEnter 触发的要稍晚一些。上例子     

@enter="handleEnter"

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Vue中的js勾子入场动画-动态实现颜色颜色变换</title>
		<script src="../vue.js"></script>
		<!-- 引入animate.css-->
		<link rel="stylesheet" type="text/css" href="https://unpkg.com/animate.css@3.5.2/animate.min.css">
		
	</head>
	<body>
		<div id="app">
			<!-- 加入before-enter和enter事件  -->
			<transition 
			name="fade"
			@before-enter="handleBeforeEnter"
			@enter="handleEnter"
			@after-enter="handleAfterEnter"
			>
				<!-- vue 的动画是通过 向某些标签上增加样式来实现的动画效果 -->
				<div v-show="show">hello world</div>
			</transition>
			<!-- 实现点击change 隐藏和显示 hello world的功能  -->
			<button @click="handleBtnClick">toggle</button>
		</div>

		<script type="text/javascript">
			
			var vm = new Vue({
				el: "#app",
				data:{
					show: true
				},
				methods:{
					handleBtnClick:function() {
						this.show = !this.show
					},
					//el 是指的父组件中的 <div v-show="show">hello world</div>
					handleBeforeEnter:function(el) {
						//在元素展示前就会执行这个方法
						console.log("handleBeforeEnter")
						el.style.color = 'red'
					},
					//el 是指的父组件中的 <div v-show="show">hello world</div>
					handleEnter:function(el,done) {
						//这个是比较beforeEnter要晚点到。所以最后的结果是绿色的
						// console.log("handleEnter")
						setTimeout(() =>{
							el.style.color = 'green'
							//done()
						},2000)
						setTimeout(() =>{
							done()
						},4000)
					},
					handleAfterEnter:function(el) {
						el.style.color = 'black'
					}
				}
			})
		</script>

	</body>
</html>

二、使用 Velocity.js  JS中常用的第三方库文件实现动画效果

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Vue中的velocity.min.js库-实现动画</title>
		<script src="../vue.js"></script>
		<!-- 引入animate.css-->
		<script type="text/javascript" src="./velocity.min.js"></script>
		
	</head>
	<body>
		<div id="app">
			<!-- 动画前的三个事件加入1 .before-enter和2.enter 3.after-enter事件  -->
			<!-- 动画结束时的三个事件 1.@before-leave   2.@leave   3.@ater-leave  -->
			<transition 
			name="fade"
			@before-enter="handleBeforeEnter"
			@enter="handleEnter"
			@after-enter="handleAfterEnter"
			>
				<!-- vue 的动画是通过 向某些标签上增加样式来实现的动画效果 -->
				<div v-show="show">hello world</div>
			</transition>
			<!-- 实现点击change 隐藏和显示 hello world的功能  -->
			<button @click="handleBtnClick">toggle</button>
		</div>

		<script type="text/javascript">
			
			var vm = new Vue({
				el: "#app",
				data:{
					show: true
				},
				methods:{
					handleBtnClick:function() {
						this.show = !this.show
					},
					//el 是指的父组件中的 <div v-show="show">hello world</div>
					handleBeforeEnter:function(el) {
						el.style.opacity = 0;
					},
					//el 是指的父组件中的 <div v-show="show">hello world</div>
					handleEnter:function(el,done) {
						Velocity(el,{
							opacity: 1
						},{
							duration:1000,
							complete:done
						})
					},
					handleAfterEnter:function(el) {
						console.log("动画结束")
					}
				}
			})
		</script>

	</body>
</html>

 类似资料: