位置: IT常识 - 正文

Vue3【Transition(效果、CSS 过渡、使用animation、TransitionGroup、 KeepAlive、Teleport )】(七)-全面详解(学习总结---从入门到深化)

编辑:rootadmin
Vue3【Transition(效果、CSS 过渡、使用animation、TransitionGroup、 KeepAlive、Teleport )】(七)-全面详解(学习总结---从入门到深化)

推荐整理分享Vue3【Transition(效果、CSS 过渡、使用animation、TransitionGroup、 KeepAlive、Teleport )】(七)-全面详解(学习总结---从入门到深化),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 🍂博主正在努力完成2023计划中:以梦为马,扬帆起航,2023追梦人

目录

​Transition效果

Transition CSS 过渡

 Transition 使用animation

TransitionGroup

 KeepAlive

Teleport 


Transition效果

Vue 提供了内置组件,可以帮助你制作基于状态变化的过渡和动画< Transition >  会在一个元素或组件进入和离开 DOM 时应用动画< Transition >  是一个内置组件,这意味着它在任意别的组件中都可以被使用,无需注册  

 过渡效果

<template> <button @click="show = !show">Toggle</button> <Transition> <p v-if="show">hello</p> </Transition></template><script setup> import { ref } from "vue" const show = ref(true)</script><style scoped>.v-enter-active, .v-leave-active { transition: opacity 0.5s ease;}.v-enter-from, .v-leave-to { opacity: 0;}.v-enter-to, .v-leave-from{ opacity: 1;}</style>Transition CSS 过渡

一共有 6 个应用于进入与离开过渡效果的 CSS class

<template> <button @click="changeHandler">变化</button> <Transition> <div v-if="show" class="box"></div> </Transition></template><script setup> import { ref } from "vue" const show = ref(true) function changeHandler(){ show.value = !show.value }</script><style scoped>.box{ width: 200px; height: 200px; background-color: red;}.v-enter-from{ opacity: 0;}.v-enter-active { transition: opacity 2s ease;}.v-enter-to { opacity: 1;}.v-leave-from{ opacity: 1;}.v-leave-active{ transition: opacity 2s ease;}.v-leave-to{ opacity: 0;}</style>

 为过渡效果命名

<template> <button @click="changeHandler">变化</button> <Transition name="box"> <div v-if="show" class="box"></div> </Transition></template><script setup>import { ref } from "vue"const show = ref(true)function changeHandler(){ show.value = !show.value}</script><style scoped> .box{ width: 200px; height: 200px; background-color: red; } .box-enter-from{ opacity: 0; } .box-enter-active { transition: opacity 2s ease; } .box-enter-to { opacity: 1; } .box-leave-from{ opacity: 1; } .box-leave-active{ transition: opacity 2s ease; } .box-leave-to{ opacity: 0; }</style>

实时效果反馈

1. 在Vue添加动画时,下列那个是 enter 过程动画的结束状态:

A v-enter-from

B v-enter-active

C v-enter-to

Vue3【Transition(效果、CSS 过渡、使用animation、TransitionGroup、 KeepAlive、Teleport )】(七)-全面详解(学习总结---从入门到深化)

D v-leave-to

 Transition 使用animation

使用 animation 实现动画效果 

<template> <button @click="changeHandler">变化</button> <Transition name="box"> <div v-if="show" class="box"></div> </Transition></template><script setup> import { ref } from "vue" const show = ref(true) function changeHandler() { show.value = !show.value }</script><style scoped> .box{ width: 200px; height: 200px; background-color: red;}.box-enter-active { animation: bounce-in 0.5s;}.box-leave-active { animation: bounce-in 0.5s reverse;}@keyframes bounce-in { 0% { transform: scale(0); } 50% { transform: scale(1.25); } 100% { transform: scale(1); }}</style>TransitionGroup

< TransitionGroup > 是一个内置组件,用于对 v-for 列表中的元素或组件的 插入、移除和顺序改变添加动画效果  

<template> <button @click="addHandler">增加</button> <TransitionGroup name="list" tag="ul"> <li v-for="item in items" :key="item"> {{ item }} </li> </TransitionGroup></template><script setup> import { reactive } from "vue" const items = reactive(["iwen","ime","frank"]) function addHandler() { items.push("sakura") }</script><style scoped> .list-enter-active, .list-leave-active { transition: all 0.5s ease; } .list-enter-from, .list-leave-to { opacity: 0; transform: translateX(30px); } .list-enter-to, .list-leave-from { opacity: 1; }</style> KeepAlive

在切换时创建新的组件实例通常是有意义的,但在这个例子中,我们的确想要组件能在被“切走”的时候保留它们的状态。要解决这个问题,我们可以用 < KeepAlive > 内置组件将这些动态组件包装起来  

保存状态 

<template> <button @click="changeHandler">切换</button> <keep-alive> <component :is="activeComponent"></component> </keep-alive></template><script> import { ref } from "vue" import ComponentA from "./ComponentA.vue" import ComponentB from "./ComponentB.vue" export default { components:{ ComponentA, ComponentB }, setup() { const activeComponent = ref("ComponentA") function changeHandler() { activeComponent.value = activeComponent.value === "ComponentA" ? "ComponentB" : "ComponentA" } return { activeComponent, changeHandler } }}</script><template> <h3>ComponentA</h3> <button @click="addCount">countA:{{ count }}</button></template><script setup> import { ref } from "vue" const count = ref(0) function addCount(){ count.value++ }</script><template> <h3>ComponentB</h3> <button @click="addCount">countA:{{ count }}</button></template><script setup> import { ref } from "vue" const count = ref(0) function addCount() { count.value++ }</script>

包含/排除

< KeepAlive > 默认会缓存内部的所有组件实例,但我们可以通过 include 和 exclude prop 来定制该行为

<template> <button @click="changeHandler">切换</button> <keep-alive include="ComponentB"> <component :is="activeComponent"></component> </keep-alive></template>

 缓存实例的生命周期

<template> <h3>ComponentB</h3> <button @click="addCount">countA:{{ count }}</button></template><script setup> import { ref,onActivated, onDeactivated } from "vue" const count = ref(0) function addCount() { count.value++ } onActivated(() => { // 调用时机为首次挂载 // 以及每次从缓存中被重新插入时 console.log("加入"); }) onDeactivated(() => { // 在从 DOM 上移除、进入缓存 // 以及组件卸载时调用 console.log("移除"); })</script>

实时效果反馈

1. 在Vue组件中,下列那个是缓存生命周期函数:

A created

B mounted

C updated

D activated

Teleport 

< Teleport >是一个内置组件,它可以将一个组件内部的一部分模板“传 送”到该组件的 DOM 结构外层的位置去

有时我们可能会遇到这样的场景:一个组件模板的一部分在逻辑上 从属于该组件,但从整个应用视图的角度来看,它在 DOM 中应该 被渲染在整个 Vue 应用外部的其他地方

< Teleport >提供了一个更简单的方式来解决此类问题,让我们不需要 再顾虑 DOM 结构的问题  

<template> <button @click="open = true">Open Modal</button> <Teleport to="body"> <div v-if="open" class="modal"> <p>Hello from the modal!</p> <button @click="open = false">Close</button> </div> </Teleport></template><script setup> import { ref } from 'vue' const open = ref(false)</script> <style scoped> .modal { position: fixed; z-index: 999; top: 20%; left: 50%; width: 300px; margin-left: -150px; background: #999; padding: 20px; text-align: center;} </style>
本文链接地址:https://www.jiuchutong.com/zhishi/299989.html 转载请保留说明!

上一篇:15000 字的 SQL 语句大全 第一部分(sql1000*1.0)

下一篇:微信小程序对上传的图片进行裁剪(微信小程序上面有个音乐怎么关闭)

  • 徕卡r502评价(徕卡r50)(徕卡r50f2)

    徕卡r502评价(徕卡r50)(徕卡r50f2)

  • 荣耀50怎么关闭hd高清通话(荣耀50怎么关闭后运行)

    荣耀50怎么关闭hd高清通话(荣耀50怎么关闭后运行)

  • 微信地图怎么添加位置(微信地图怎么添加商家位置)

    微信地图怎么添加位置(微信地图怎么添加商家位置)

  • 网易云可以看好友在线吗(网易云可以看好友最近听过的歌吗)

    网易云可以看好友在线吗(网易云可以看好友最近听过的歌吗)

  • 已关注微信公众号二维码怎么找(已关注微信公众号在哪)

    已关注微信公众号二维码怎么找(已关注微信公众号在哪)

  • 华为p50Pro什么时候发布(华为p50pro什么时候发售)

    华为p50Pro什么时候发布(华为p50pro什么时候发售)

  • vivos6有提示灯吗(vivos7有提示灯吗)

    vivos6有提示灯吗(vivos7有提示灯吗)

  • 微信如果对方把你删了是什么样的(微信如果对方把我删了会怎样显示)

    微信如果对方把你删了是什么样的(微信如果对方把我删了会怎样显示)

  • v1813t是什么型号

    v1813t是什么型号

  • 华为p40字体怎么调大(华为p40字体怎么放大)

    华为p40字体怎么调大(华为p40字体怎么放大)

  • 抖音在线状态是什么意思(抖音在线状态是绿点代表什么意思啊)

    抖音在线状态是什么意思(抖音在线状态是绿点代表什么意思啊)

  • 苹果xr原装充电器型号(苹果xr原装充电器多少钱)

    苹果xr原装充电器型号(苹果xr原装充电器多少钱)

  • word下划线快捷键(文档下划线怎么加)

    word下划线快捷键(文档下划线怎么加)

  • 苹果怎么下载软件不用输密码(苹果怎么下载软件不用app store)

    苹果怎么下载软件不用输密码(苹果怎么下载软件不用app store)

  • mac输入法不显示中文了为什么(mac输入法不显示拼音)

    mac输入法不显示中文了为什么(mac输入法不显示拼音)

  • 苹果6手机无服务是什么原因(苹果6手机无服务怎么办)

    苹果6手机无服务是什么原因(苹果6手机无服务怎么办)

  • id被锁了怎么才能解锁(id被锁了怎么才能解锁电子邮件验证不了)

    id被锁了怎么才能解锁(id被锁了怎么才能解锁电子邮件验证不了)

  • win10pe系统怎么进入(win10pe系统怎么找桌面文件)

    win10pe系统怎么进入(win10pe系统怎么找桌面文件)

  • qq被限制解封怎么办(qq账号被限制解封怎么办想要快速解冻)

    qq被限制解封怎么办(qq账号被限制解封怎么办想要快速解冻)

  • 苹果xsmax能插耳机吗(苹果xsmax插耳机有英文提示)

    苹果xsmax能插耳机吗(苹果xsmax插耳机有英文提示)

  • 机械表跳日期都不准吗(机械表日期跳一半怎么回事)

    机械表跳日期都不准吗(机械表日期跳一半怎么回事)

  • 荣耀v20后面是双摄吗(荣耀v20是双4g手机吗)

    荣耀v20后面是双摄吗(荣耀v20是双4g手机吗)

  • 西文空格怎么删除(西文空格删除怎么删)

    西文空格怎么删除(西文空格删除怎么删)

  • 苹果手机尚未接入互联网是什么意思(苹果手机从哪里看本机号码)

    苹果手机尚未接入互联网是什么意思(苹果手机从哪里看本机号码)

  • 新手如何开店(新手如何开店拼多多)

    新手如何开店(新手如何开店拼多多)

  • vivo手机解除拉黑电话号码(vivo手机怎么解除拉黑对方手机号码)

    vivo手机解除拉黑电话号码(vivo手机怎么解除拉黑对方手机号码)

  • 为什么word会在把打字的后一个给删除(为什么word在横线上字下面是空的)

    为什么word会在把打字的后一个给删除(为什么word在横线上字下面是空的)

  • 如何复制ppt中的一页(如何复制PPT中的音频)

    如何复制ppt中的一页(如何复制PPT中的音频)

  • 详解Linux系统中crontab命令处理定时任务的用法(linux c gui)

    详解Linux系统中crontab命令处理定时任务的用法(linux c gui)

  • 项目无法识别 ?. 语法,导致报错Module parse failed: Unexpected token(项目不可用怎么解决)

    项目无法识别 ?. 语法,导致报错Module parse failed: Unexpected token(项目不可用怎么解决)

  • 增值税发票如何抵扣税款
  • 哪些土地房产转让合法
  • 税法的分类都有什么
  • 个人报销电话费怎么做分录
  • 财政基建拨款如何做分录
  • 冲红的发票税款计提分录要冲红吗
  • 服装企业销售方式
  • 投资性房地产处置时为什么要结转其他综合收益
  • 汽车租赁的印花税税率
  • 广告业福利发放会计处理怎么做?
  • 债券分期还本利息怎么算
  • 货物运输企业的经营方式
  • 购买货物运费怎么做分录
  • 业务宣传及广告费超比例
  • 土地款印花税计入无形资产吗
  • 劳务费发票是几个点的税率
  • 企业经营者试行什么制度
  • 新注册的个体户怎么开发票
  • 小规模纳税人附加税会计分录
  • 超市买的东西开什么发票
  • 简易计税进项税额转出公式
  • 子公司之间固定资产划转 增值税会计处理
  • 自然人股权转让要交什么税
  • 白酒消费税最低计税价格
  • 收到负数购入发票怎么办
  • 给客户购买礼品怎么记账
  • 长期借款和短期借款时间
  • 暂估入库怎么处理
  • 如何弥补以前年假的问题
  • 月末结转未分配利润吗
  • php readfile
  • php的转义字符反斜杠
  • 收到违约金如何入账
  • 国产设备投资抵免企业所得税
  • 深度学习&故障诊断初学者 - 学习路线
  • php批量更新数据库
  • 委托加工的材料成本包括辅助材料成本吗
  • 现金及现金等价物净增加额为负数
  • 销项税的分录怎么做
  • 增值税留抵税额可以结转下一年吗
  • 手把手怎么写
  • 使用ajax实现页面分页
  • 公积金提取条件资料
  • 行政事业单位固定资产划拨账务处理
  • 纳税申报和账务不一致
  • mongodb如何修改数据
  • 会计科目在建工程含税吗
  • 一般纳税人不抵扣怎样交税
  • 缴纳税收的凭证怎么打印
  • 专利年费的滞纳金怎么做账
  • 三项经费要包括哪三项
  • 什么是现金流量的概念?
  • 计提的生产车间职工工资
  • 总分类账与明细分类账平行登记的要点包括
  • 财务软件是有哪些软件
  • 政府拨款怎么做账
  • 现金流量比率是什么意思
  • 废料卖出算哪种收入
  • 电脑折旧多少钱
  • 设备5年直线法计提折旧怎么做?
  • 什么是履约义务,举例
  • 高新技术企业享受优惠时间
  • 在幻灯片母版中
  • mac电脑拷贝文件在哪里
  • 哪款系统重装软件比较好
  • u盘安装linux系统遇到的问题
  • WinAce.exe - WinAce是什么进程
  • 去掉电脑右下角显示的时间
  • win10怎么预览
  • mac z
  • puppet部署
  • windows8为什么不好用
  • android开发工具排行榜
  • cocos2dx3.3在Win7(64位)上Android开发环境搭建(提要)
  • html通配符选择器怎么用
  • Node.js中的包管理工具是什么
  • 使用时间
  • unity导入max文件
  • 广东省电子税务局app下载手机版
  • 江之都财税服务集团有限公司地址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设