Vue —— 进阶脚手架(六)(过渡与动画)

Vue全家桶 系列文章目录

内容参考链接
Vue2.x - 基础Vue2.x - 基础
Vue2.x - 进阶(零)初始化脚手架
Vue2.x - 进阶(一)refs属性、props配置项
Vue2.x - 进阶(二)混入 mixin、插件 plugins、样式 scoped
Vue2.x - 进阶(三)本地存储
Vue2.x - 进阶(四)组件的自定义事件
Vue2.x - 进阶(五)全局事件总线、消息订阅与发布
Vue2.x - 进阶(六)过渡与动画
Vue2.x - 进阶(七)解决开发环境 Ajax 跨域问题
Vue2.x - 进阶(八)默认插槽、具名插槽和作用域插槽
Vue2.x - 周边(Vuex、Vue-router)Vuex、Vue-router
Vue3.0 - 新增Vue3.0 新增内容
Vue2.x 项目(附源码)Vue + ElementUI 后台管理项目(附源码)
Vue3.0 项目Vue3.0 企业级 App


Vue 封装的过渡和动画
1. 作用

在插入、更新或移出DOM元素时,在合适的时候给元素添加样式类名。

2. 图示

在这里插入图片描述

3. 准备好样式

元素进入的样式

  1. v-enter:进入的起点
  2. v-enter-active:进入的过程中
  3. v-enter-to:进入的终点

元素离开的样式

  1. v-leave:离开的起点
  2. v-leave-active:离开的过程中
  3. v-leave-to:离开的终点
4. 包裹要过渡的元素

使用 transition 包裹要过渡的元素,并配置 name 属性

	<transition name='hello'>
		<h3 v-show='isShow'>Hello</h3>
	</transition>

注意:若有多个元素需要过渡,则需要使用 <transition-group>,且每个元素都要指定 key 值。

实例:动画效果实现动画

Vue动画效果

先在 @keyframes xxx {} 中准备好动画效果,再包裹要动画的元素。

	<template>
	  <div>
	    <button @click="isShow = !isShow">显示/隐藏</button>
	    <transition appear>
	      <h3 v-show="isShow">Hello~</h3>
	    </transition>
	  </div>
	</template>
	
	<script>
	export default {
	  name: "myTest",
	  data() {
	    return {
	      isShow: true,
	    };
	  },
	};
	</script>
	
	<style scoped>
	h3 {
	  background-color: orange;
	}
	.v-enter-active {
	  animation: demo 0.5s linear;
	}
	.v-leave-active {
	  animation: demo 0.5s linear reverse;
	}
	@keyframes demo {
	  from {
	    transform: translateX(-100%);
	  }
	  to {
	    transform: translateX(0px);
	  }
	}
	</style>
实例:过渡效果实现动画

实现相同的效果

	<template>
	  <div>
	    <button @click="isShow = !isShow">显示/隐藏</button>
	    <transition-group name='hello' appear>
	      <h3 v-show="!isShow" key="1">Hello~</h3>
	      <h3 v-show="isShow" key="2">Vue~</h3>
	    </transition-group>
	  </div>
	</template>
	
	<script>
	export default {
	  name: "myTest",
	  data() {
	    return {
	      isShow: true,
	    };
	  },
	};
	</script>
	
	<style scoped>
	h3 {
	  background-color: orange;
	}
	/* 进入的起点 离开的终点*/
	.hello-enter, .hello-leave-to{
	  transform: translateX(-100%);
	}
	.hello-enter-active, .hello-leave-active{
	  transition: 0.5s linear;
	}
	/* 进入的终点 离开的起点*/
	.hello-enter-to, .hello-leave{
	  transform: translateX(0);
	}
	
	@keyframes atguigu {
	  from {
	    transform: translateX(-100%);
	  }
	  to {
	    transform: translateX(0px);
	  }
	}
	</style>
实例:引入第三方库实现动画
  1. 第三方库 | 链接地址
  2. 在终端键入 $ npm install animate.css 命令
  3. 按要求选择配置
	<template>
	  <div>
	    <button @click="isShow = !isShow">显示/隐藏</button>
	    <transition-group 
	    appear
	    name="animate__animated animate__bounce" 
	    enter-active-class="animate__swing"
	    leave-active-class="animate__backOutUp"
	    >
	      <h3 v-show="!isShow" key="1">Hello~</h3>
	      <h3 v-show="isShow" key="2">Vue~</h3>
	    </transition-group>
	  </div>
	</template>
	
	<script>
	import "animate.css";
	export default {
	  name: "myTest",
	  data() {
	    return {
	      isShow: true,
	    };
	  },
	};
	</script>
	
	<style scoped>
	h3 {
	  background-color: orange;
	}
	/* 进入的起点 离开的终点*/
	.hello-enter,
	.hello-leave-to {
	  transform: translateX(-100%);
	}
	.hello-enter-active,
	.hello-leave-active {
	  transition: 0.5s linear;
	}
	/* 进入的终点 离开的起点*/
	.hello-enter-to,
	.hello-leave {
	  transform: translateX(0);
	}
	
	@keyframes atguigu {
	  from {
	    transform: translateX(-100%);
	  }
	  to {
	    transform: translateX(0px);
	  }
	}
	</style>

不积跬步无以至千里 不积小流无以成江海

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值