其他分享
首页 > 其他分享> > VUE学习-元素过渡

VUE学习-元素过渡

作者:互联网

单元素过渡

appear 初始渲染

通过 appear attribute 设置节点在初始渲染的过渡

过渡

v-if 或者 v-show 条件显示或者动态组件下可以添加进入/离开过渡

<div id="demo">
	<button v-on:click="show = !show">Toggle</button>
	<transition name="fade">
		<p v-if="show">hello</p>
	</transition>
</div>
<script>
new Vue({
	el: '#demo',
	data: {show: true }
})
</script>
<style>
/* 定义进入 /离开的过渡动作 */
.fade-enter-active, .fade-leave-active {transition: opacity .5s;}
/* .fade-leave-active below version 2.1.8 */
.fade-enter, .fade-leave-to {opacity: 0;}
</style>

动画

CSS 动画用法同 CSS 过渡,区别是在动画中 v-enter 类名在节点插入 DOM 后不会立即删除,而是在 animationend 事件触发时删除。

<div id="demo">
	<button v-on:click="show = !show">Toggle</button>
	<transition name="bounce">
		<p v-if="show">hello</p>
	</transition>
</div>
<script>
new Vue({
	el: '#demo',
	data: {show: true }
})
</script>
<style>
/* 定义进入 / 离开的动画 */
.bounce-enter-active {
	animation: bounce-in .5s;
}

.bounce-leave-active {
	animation: bounce-in .5s reverse;
}

@keyframes bounce-in {
	0% {transform: scale(0);}
	50% {transform: scale(1.5);}
	100% {transform: scale(1);}
}
</style>

在一些场景中,你需要给同一个元素同时设置两种过渡动效,比如 animation 很快的被触发并完成了,而 transition 效果还没结束。在这种情况中,你就需要使用 type attribute 并设置 animationtransition 来明确声明你需要 Vue 监听的类型。

多元素过渡

多维表格重排

https://codesandbox.io/s/github/vuejs/vuejs.org/tree/master/src/v2/examples/vue-20-list-move-transitions?file=/index.html:0-1157

<!DOCTYPE html>
<html>
<head>
	<title>List Move Transitions Sudoku Example</title>
	<script src="https://unpkg.com/vue@2"></script>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.14.1/lodash.min.js"></script>
	<link rel="stylesheet" type="text/css" href="/style.css" />
</head>
<body>
	<div id="sudoku-demo" class="demo">
		<h1>Lazy Sudoku</h1>
		<p>Keep hitting the shuffle button until you win.</p>
		<button @click="shuffle">Shuffle</button>
		<transition-group name="cell" tag="div" class="container">
			<div v-for="cell in cells" :key="cell.id" class="cell">{{ cell.number }}</div>
		</transition-group>
	</div>
	<script>
	new Vue({
		el: "#sudoku-demo",
		data: {
			cells: Array.apply(null, { length: 81 }).map(function(_, index) {
				return {
					id: index,
					number: (index % 9) + 1
				};
			})
		},
		methods: {
			shuffle: function() {
				//创建一个被打乱值的集合
				this.cells = _.shuffle(this.cells);
			}
		}
	});
	</script>
</body>
</html>

标签:VUE,过渡,transition,元素,list,leave,fade,enter,active
来源: https://www.cnblogs.com/-LemonWater-/p/16583011.html