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

命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

导读:本篇文章讲解 08-Vue技术栈之过度与动画,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

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>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/144044.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!