当前位置: 首页 > article >正文

08-Vue技术栈之过度与动画

目录

  • 1、作用
  • 2、写法
  • 3、动画的应用
  • 4、过度的应用
  • 5、animate.css动画库的使用

1、作用

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

图示:
在这里插入图片描述

2、写法

  1. 准备好样式:

    • 元素进入的样式:
      1. v-enter:进入的起点
      2. v-enter-active:进入过程中
      3. v-enter-to:进入的终点
    • 元素离开的样式:
      1. v-leave:离开的起点
      2. v-leave-active:离开过程中
      3. v-leave-to:离开的终点
  2. 使用<transition>包裹要过度的元素,并配置name属性:

    <transition name="hello">
    	<h1 v-show="isShow">你好啊!</h1>
    </transition>
    
  3. 备注:若有多个元素需要过度,则需要使用:<transition-group>,且每个元素都要指定key值。

3、动画的应用

  • 实现效果:

请添加图片描述
代码示例:

<template>
  <div>
    <button @click="isShow = !isShow" class="btn">点我切换动画</button>
	<!-- 若有多个元素需要过度,则需要使用:<transition-group>,且每个元素都要指定key值。 -->
	<!-- appear设置为true则让动画页面刷新时自动触发一次 -->
	<!-- 如果有多个transition标签则需要指定当前标签的name值,这样才可以为他们设置不同的动画 -->
    <transition-group  name="animation1" :appear="true">
      <div class="one" v-show="isShow" key="1">东方青云</div>
      <div class="one" v-show="isShow" key="2">东方青云</div>
    </transition-group>
  </div>
</template>

<script>
export default {
  name: "Test",
  data() {
    return {
      isShow: true,
    };
  },
};
</script>

<style>
.btn {
  padding: 5px;
  background: #e09292;
  border: none;
  border-radius: 10px;
  cursor: pointer;
}
.one {
  background: rgb(236, 142, 142);
  color: #fff;
  margin-top: 20px;
  padding: 15px;
}
/* 进入过程中 */
.animation1-enter-active {
	animation: animations 0.5s linear;
}
/* 离开过程中 */
.animation1-leave-active {
	animation: animations 0.5s linear reverse;
}
/*定义动画*/
@keyframes animations {
  from {
    transform: translateX(-100%);
  }
  to {
    transform: translateX(0);
  }
}
</style>

4、过度的应用

  • 实现效果:

请添加图片描述
代码示例:

<template>
  <div>
    <button @click="isShow = !isShow" class="btn">点我切换动画</button>
    <!-- 若有多个元素需要过度,则需要使用:```<transition-group>```,且每个元素都要指定```key```值。 -->
    <!-- appear设置为true则让动画页面刷新时自动触发一次 -->
    <!-- 如果有多个transition标签则需要指定当前标签的name值,这样才可以为他们设置不同的动画 -->
    <transition-group name="animation1" :appear="true">
      <div class="one" v-show="isShow" key="1">东方青云</div>
      <div class="one" v-show="isShow" key="2">东方青云</div>
    </transition-group>
  </div>
</template>

<script>
export default {
  name: "Test",
  data() {
    return {
      isShow: true,
    };
  },
};
</script>

<style>
.btn {
  padding: 5px;
  background: #e09292;
  border: none;
  border-radius: 10px;
  cursor: pointer;
}
.one {
  background: rgb(236, 142, 142);
  color: #fff;
  margin-top: 20px;
  padding: 15px;
  transition: 0.5s linear;
}
/* 进入的终点,离开的起点 */
.animation1-enter-to,.animation1-leave {
	transform: translateX(0);
}
/* 进入的起点,离开的终点 */
.animation1-enter,.animation1-leave-to {
	transform: translateX(-100%);
}

</style>

5、animate.css动画库的使用

第一步:
安装动画包

npm install animate.css --save

第二步:
导入动画包

import "animate.css";

第三步:
安装 Animate.css 后,将类添加到元素中,以及任何动画名称

<h1 class="animate__animated animate__bounce">An animated element</h1>

实现效果:
请添加图片描述
代码示例:

<template>
  <div>
    <button @click="isShow = !isShow" class="btn">点我切换动画</button>
    <transition-group
      appear
      name="animate__animated animate__bounce"
      enter-active-class="animate__swing"
      leave-active-class="animate__backOutUp"
    >
      <div class="one" v-show="isShow" key="1">东方青云</div>
      <div class="one" v-show="isShow" key="2">东方青云</div>
    </transition-group>
  </div>
</template>

<script>
import "animate.css";
export default {
  name: "Test",
  data() {
    return {
      isShow: true,
    };
  },
};
</script>

<style scoped>
.btn {
  padding: 5px;
  background: #e09292;
  border: none;
  border-radius: 10px;
  cursor: pointer;
}
.one {
  background: rgb(236, 142, 142);
  color: #fff;
  margin-top: 20px;
  padding: 15px;
  transition: 0.5s linear;
}
</style>

http://www.kler.cn/a/17037.html

相关文章:

  • Database Advantages (数据库系统的优点)
  • Flink1.19编译并Standalone模式本地运行
  • 大数据新视界 -- 大数据大厂之 Impala 存储格式转换:从原理到实践,开启大数据性能优化星际之旅(下)(20/30)
  • Linux 函数在多个地方被同时调用时,函数中的变量如何管理,确保互不影响
  • HTTP协议基础
  • Spark:不能创建Managed表,External表已存在...
  • 如何使用CSS和JS实现一个响应式的滚动时间轴
  • 你最关心的4个零代码问题,ChatGPT 帮你解答了!
  • Python基础合集 练习22 (错误与异常处理语句2)
  • 【Spring6】| Spring6整合JUnit
  • 【Git】‘git‘ 不是内部或外部命令,也不是可运行的程序
  • 2016 ICPC合肥站 传递 HDU-5961(拓扑排序 / bitset / 暴力(可hack))
  • 相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。
  • 2.6 浮点运算方法和浮点运算器
  • c++ 入门概述
  • WEB攻防通用漏洞跨域CORS资源JSONP回调域名接管劫持
  • CSS布局基础(CSS书写顺序 导航栏写法 常见问题)
  • SQL 语句性能优化策略
  • 【谷粒商城之消息队列RabbitMQ】
  • nullptr和NULL的区别
  • Photoshop如何使用选区之实例演示?
  • Java中顺序表详解
  • 自动驾驶行业观察之2023上海车展-----智驾供应链(1)
  • E. Train Hard, Win Easy(数学推导 + 前缀和)
  • JAVA-实现简易图书管理系统
  • leetcode 面试题 02.04. 分割链表