Vue - 使用 transition 过渡动画、Animate.css 库动画

news/2024/9/28 17:26:11
 

一. transition

  • transition 标签包裹的内容会有一个过渡的动画效果
  • 使用 transition 过渡组件需要满足的条件:
    1. 条件渲染(v-if
    2. 条件展示(v-show
    3. 动态组件
  • 可以使用 name 属性给 transition 标签起名字
    1. class选择器名字和 name 属性有关系,这里 name 属性名为 fade, 则class选择器名称前缀都已fade开头,
    2. 如果不写name属性,则class选择器名称前缀默认以 v 开头
  • transition 标签包裹的内容从隐藏变为显示时候动画原理
    1. 在动画即将被执行的一瞬间(动画执行的第一帧),会向transition内部的标签上增加两个class选择器名字,分别是v-enterv-enter-active
    2. 在动画运行到第二帧的时候,会把 v-enter 的class选择器名称移除,然后增加一个v-enter-to的选择器名称
    3. 在动画执行结束的时候(动画执行的最后一帧),会把添加v-enter-activev-enter-to的class选择器名称移除
  • transition 标签包裹的内容从隐藏变为显示时候动画原理
    1. 在隐藏的第一个瞬间(动画执行的第一帧),会向transition内部的标签上增加两个class选择器名字,分别是v-leavev-leave-active
    2. 在动画运行到第二帧的时候,会把 v-leave 的class选择器名称移除,然后增加一个v-leave-to的选择器名称
    3. 在动画执行结束的时候(动画执行的最后一帧),会把添加v-leave-activev-leave-to的class选择器名称移除
  • 过渡CSS类名
    <transition>中的name属性用于 替换 vue钩子函数中的类名 v ,默认为 v
    1. v-enter: 定义进入动画之前,元素的起始状态。在元素被插入时生效,在下一个帧移除。
    2. v-enter-active: 定义进入动画的状态。在元素被插入时生效,在transition/animation完成之后移除。
    3. v-leave:定义离开之后动画的终止状态。在离开过渡被触发时生效,在下一个帧移除。
    4. v-leave-active: 定义离开动画的结束状态。在离开过渡被触发时生效,在transition/animation完成之后移除。

一个过渡动画的实例:

<template><div class="wrap"><transition name="fade"><div v-show="show">hello world</div></transition><button @click="handleClick">切换显隐</button></div>
</template>
<script>
export default {data() {return {show: true,};},methods: {handleClick() {this.show = !this.show;},},
};
</script>
<style scoped>
.v-enter,
.v-leave-to {opacity: 0;
}
.v-enter-active,
.v-leave-active {transition: opacity 3s;
}
</style>

二. Vue 中使用 @keyframes

1. @keyframes 的使用

  1. style 中设置@keyframes
  2. transition 标签 class样式中使用 @keyframes样式名称,这里为 bounce-in
<template><div class="wrap"><transition name="fade"><div v-show="show">hello world</div></transition><button @click="handleClick">切换显隐</button></div>
</template>
<script>
export default {data() {return {show: true,};},methods: {handleClick() {this.show = !this.show;},},
};
</script>
<style scoped>
@keyframes bounce-in{0% {transform: scale(0);}50% {transform: scale(1.5);}100% {transform: scale(1);}
}
.fade-enter-active {transform-origin: left center;animation:bounce-in 1s;
}
.fade-leave-active {transform-origin: left center;animation:bounce-in 1s reverse;
}

2. 自定义 transition 标签的 class 名字,使用 @keyframes

  1. 设置 transition 自定义 class 名

   2. 设置 class 的过渡样式

   3. 一个实例

<template><div class="wrap"><h2>css过渡动画</h2><transition name="fade" enter-active-class="active" leave-active-class="leave"><div v-show="show">hello world</div></transition><button @click="handleClick">切换显隐</button></div>
</template>
<script>
export default {data() {return {show: true,};},methods: {handleClick() {this.show = !this.show;},},
};
</script>
<style scoped>
@keyframes bounce-in{0% {transform: scale(0);}50% {transform: scale(1.5);}100% {transform: scale(1);}
}
.active {transform-origin: left center;animation:bounce-in 1s;
}
.leave {transform-origin: left center;animation:bounce-in 1s reverse;
}
</style>

三. Vue 中使用Animate.css库

1. 使用Animate.css库,设置动画

Animate.css 官网:https://animate.style/

    1. 项目中引入 Animate.css 库
      使用教程:https://animate.style/#documentation

    2. 使用 Animate.css 库

 

   3. 一个实例

<template><div class="wrap"><h2>css过渡动画</h2><transition name="fade" enter-active-class="animate__animated animate__bounceInDown" leave-active-class="animate__animated animate__bounceOut"><div v-show="show">hello world</div></transition><button @click="handleClick">切换显隐</button></div>
</template>
<script>
export default {data() {return {show: true,};},methods: {handleClick() {this.show = !this.show;},},
};
</script>
<style scoped>
</style>

2. 页面刷新,展示Animate.css库动画效果

上面设置的动画效果,在刷新的时候是没有效果的;如果需要在页面刷新时,也展示动画效果,需要添加以下设置:

 

3. 同时使用 transition 动画,和Animate.css 库动画效果

  1. 增加 class 名

   2. style 中编写对应的样式

   3. 同时使用 transition 动画,和 Animate.css 库动画,动画时长不一致时,手动设置动画时长基准。设置 type 属性
   Animate.css 库动画默认为一秒结束,这里 transition 动画设置的时 3 秒结束,所以以 transition 动画为基准,三秒结束动画 type="transition"

   4. 自定义动画时长
    为 transition 标签添加绑定 duration 属性,值为毫秒数 :duration="10000"

   5. 自定义动画时长,分别设置显示和隐藏的动画时长
    为 transition 标签添加绑定 duration 属性,值为一个对象 :duration="{enter:5000,leave:10000}"

   6. 一个实例

<template><div class="wrap"><h2>css过渡动画</h2><transition:duration="{enter:5000,leave:10000}"name="fade"appearenter-active-class="animate__animated animate__bounce fade-enter-active"leave-active-class="animate__animated animate__shakeX fade-leave-active"appear-active-class="animate__animated animate__bounceInDown"><div v-show="show">hello world</div></transition><button @click="handleClick">切换显隐</button></div>
</template>
<script>
export default {data() {return {show: true,};},methods: {handleClick() {this.show = !this.show;},},
};
</script>
<style scoped>
.fade-enter,
.fade-leave-to {opacity: 0;
}
.fade-enter-active,
.fade-leave-active {transition: opacity 3s;
}
</style>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/45681.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

C++中NULL与nullptr

C++中NULL与nullptrC语言中: #define NULL((void*)0)C++中: #ifdef NULL #ifdef_cplusplus #define NULL 0 #else #define NULL((void*)0) #endif #endif所以一目了然:C++11中,专门加了nullptr来替代 (void*)0,NULL只表示0

docker - 生命周期和状态

docker 的声明周期大致分为7种状态created:已创建(未启动) running:运行中 exited:退出(可随时重启) paused:暂停中 restarting:重启中 removing:删除中 dead:异常退出(会出现在系统错误导致的容器退出,不常见)欢迎加 1092845214 交流沟通呀~ 本文来自博客园,作…

【ASeeker】Android 源码捞针,服务接口扫描神器

ASeeker 是一个 Android 源码应用系统服务接口扫描工具。是我们在做虚拟化分身产品『 空壳 』过程中的内部开发工具,目的是为了提升 Android 系统各版本适配效率。ASeeker是一个Android源码应用系统服务接口扫描工具。项目已开源: ☞ Github ☜  如果您也喜欢 ASeeker,别忘…

【日记】上班居然睡了一上午(230 字)

正文昨天色到了很晚,早上没什么精神,于是睡了一个上午。在监控下面睡,只能说不愧是我。高中练就的无痕上课睡觉绝技居然在上班时也能派上用场。反洗钱系统今天卡到爆炸,这部分工作只能明天再做了。下午写了一篇文章。今天似乎也没做什么呢。晚上很想好好地在舞蹈室里练习,…

Linux 安装mongodb

1.1 Mongodb要求使用最新稳定版本 安装包下载地址:https://www.mongodb.com/try/download/community 本次选择:mongodb-linux-x86_64-rhel70-4.4.13.tgz 1.2安装步骤 上传安装包到服务器,并解压 #tar –zxvf mongodb-linux-x86_64-rhel70-4.4.13.tgz重命名解压后的文件名 # …

聊一聊 Monitor.Wait 和 Pluse 的底层玩法

一:背景 1. 讲故事 在dump分析的过程中经常会看到很多线程卡在Monitor.Wait方法上,曾经也有不少人问我为什么用 !syncblk 看不到 Monitor.Wait 上的锁信息,刚好昨天有时间我就来研究一下。 二:Monitor.Wait 底层怎么玩的 1. 案例演示 为了方便讲述,先上一段演示代码,Work…

Sql注入基础

1. Sql 注入基础 1.1 SQL 注入的发生1.2 如何获取数据库信息show 命令 select +函数 系统库1.3 参数会如何处理?1.4 Sql 注入的完整流程判断是否可以注入 获得数据库名 获得表名 获取列名 获得数据2. SQL 注入自动化工具 2.1 sqlmap2.2 sqlmap 参数详解 sqlmap -hh 基本用法:…

易基因:MeRIP-seq等揭示RNA m6A去甲基化酶调控植物雄性不育的分子机制 | 科研速递

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 水稻是全球重要的农作物,也是单子叶植物模型。在水稻中,N6-甲基腺苷(m6A)mRNA修饰对植物的发育和胁迫响应至关重要。OsFIP37作为m6A甲基化复合体的核心组分,其缺乏会导致雄性不育,强调了m6A在雄性生育中…