位置: 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)

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

  • 微信错发1小时后怎么撤回(微信发错了超过2分钟了怎么办)

    微信错发1小时后怎么撤回(微信发错了超过2分钟了怎么办)

  • vivox70怎么设置双击锁屏(vivox70怎么设置动态壁纸)

    vivox70怎么设置双击锁屏(vivox70怎么设置动态壁纸)

  • 微信让群内好友邀请进群怎么操作(微信群内好友发消息工具)

    微信让群内好友邀请进群怎么操作(微信群内好友发消息工具)

  • 淘宝月卡怎样恢复自动续费(淘宝月卡怎么自己取消了)

    淘宝月卡怎样恢复自动续费(淘宝月卡怎么自己取消了)

  • 手机的歌曲怎么下载到u盘(手机的歌曲怎么传到电脑)

    手机的歌曲怎么下载到u盘(手机的歌曲怎么传到电脑)

  • 支付宝数据如何迁移到新手机(支付宝数据如何迁移到苹果手机)

    支付宝数据如何迁移到新手机(支付宝数据如何迁移到苹果手机)

  • 公众号爆文作者是什么意思(公众号爆文作者木汁作品)

    公众号爆文作者是什么意思(公众号爆文作者木汁作品)

  • 作品推广会显示出来么(作品推广会显示什么内容)

    作品推广会显示出来么(作品推广会显示什么内容)

  • jsm-aloo是什么系统(jsn—al00是什么型号)

    jsm-aloo是什么系统(jsn—al00是什么型号)

  • 注销账号个人信息会删除吗(注销账户信息)

    注销账号个人信息会删除吗(注销账户信息)

  • 拼多多是不是阿里巴巴的(拼多多是不是阿里巴巴其实是不是接的阿里巴巴全国代理)

    拼多多是不是阿里巴巴的(拼多多是不是阿里巴巴其实是不是接的阿里巴巴全国代理)

  • excel输入的数据类型分为哪几类?(excel输入的数据变了)

    excel输入的数据类型分为哪几类?(excel输入的数据变了)

  • 浏览网页时遇到的最常见的网络广告形式是?(浏览网页时遇到的最常见的网络广告形式是)

    浏览网页时遇到的最常见的网络广告形式是?(浏览网页时遇到的最常见的网络广告形式是)

  • 来电不显示名字怎么回事 (华为GT3来电不显示名字)

    来电不显示名字怎么回事 (华为GT3来电不显示名字)

  • qq轮船多久会掉(qq轮船多久出来)

    qq轮船多久会掉(qq轮船多久出来)

  • wps表格删除单独线(wps表格删除单独一页内容)

    wps表格删除单独线(wps表格删除单独一页内容)

  • iphone11原彩显示是什么意思(iphone11原彩显示有什么用)

    iphone11原彩显示是什么意思(iphone11原彩显示有什么用)

  • 小米内容中心怎么删除(小米内容中心怎么卸载)

    小米内容中心怎么删除(小米内容中心怎么卸载)

  • 低速内存卡什么意思(内存卡低速和高速有啥区别)

    低速内存卡什么意思(内存卡低速和高速有啥区别)

  • 苹果6怎么蓝牙耳机搜不到(苹果6怎么蓝牙传视频)

    苹果6怎么蓝牙耳机搜不到(苹果6怎么蓝牙传视频)

  • 文字分栏在哪里设置

    文字分栏在哪里设置

  • 关于oss使用sts 后台签发临时token前端直传大文件的错误记录(oss使用场景)

    关于oss使用sts 后台签发临时token前端直传大文件的错误记录(oss使用场景)

  • 阴影进阶,实现更加的立体的阴影效果!(阴影等级是什么)

    阴影进阶,实现更加的立体的阴影效果!(阴影等级是什么)

  • 房屋赠与双方办理流程
  • 消费税和所得税的关系
  • 预缴税款计算公式
  • 小规模减免增值税
  • 多缴纳了印花税有什么影响
  • 补缴以前年度增值税如何做账
  • 委托外单位研发的研发费用加计扣除最新政策
  • 营业总成本包括管理费用吗
  • 金税盘没有及时清卡怎么办
  • 通用机打发票还能用吗
  • 境外机构在境内发行的人民币债券
  • 进口增值税的账务处理
  • 企业接到银行通知,借入长期借款的应付利息为15000
  • 出售无形资产的会计科目
  • 交易性金融资产的交易费用计入哪里
  • 库存生产用钢材属于什么会计科目类别
  • 应计未计成本税前扣除年限
  • 代购要交税么
  • 关于建筑工程发包与承包下列说法正确的是
  • 免税发票上税率是多少
  • 账务不符怎么写
  • 出租房产如何交土地使用税
  • 重庆增值税税率调整
  • 视同销售的计税依据
  • 免税农产品抵扣政策
  • 暂估成本比实际高分录
  • 本月未认证的怎么处理
  • 投资公司的股东
  • macos big sur正式版
  • 邮件远程控制
  • 分公司 股东
  • 捐钱扶贫
  • 其他流动资产是速动资产吗
  • svc语法
  • 通俗易懂的炒货店名字
  • vue中的路由守卫有哪些
  • php die exit
  • 记账凭证银行利息入息
  • 物权转移手续是什么
  • db2bigint
  • 旅行社的增值税税率
  • 错账调整分录
  • 如何开具通用电子发票
  • 企业应付债券增加说明了什么
  • 小微企业免征的增值税怎么做账
  • 资产负债有哪些科目
  • 离职补偿金的计算基数
  • 交易性金融资产属于流动资产
  • 购买设备分期付款凭证怎么做
  • 税控系统技术维护费会计处理
  • 材料合理损耗计入入账价值吗
  • 抵账房买卖流程
  • 记账凭证后面附发票第几联
  • 实发工资有小数点是如何解决的
  • 挂靠经营的会计处理是?
  • 视同销售但未收到钱怎么做账?
  • 负债清偿损益明细表计税基础怎么填
  • 政府补贴递延收益的摊销时间
  • 记账凭证可以先做贷方吗
  • 财务报表项目认定有哪些
  • 设置账簿的依据
  • Centos7 下Mysql5.7.19安装教程详解
  • winxp出现应用程序错误
  • mac os x 10.12.2 Beta1怎么升级?macOS Sierra 10.12.2 Beta升级图文教程
  • win 7组策略
  • macbook系统截图
  • centos7 ifcfg-lo
  • win8计算机配置在哪
  • linux diff命令详解
  • opengl learn
  • ajax怎么用
  • 批处理文件教程
  • python嵌套列表生成
  • Python文件处理
  • linux多线程编程实例
  • js parsefloat parseint 转换函数
  • android 全局viewmodel
  • 辽宁省社保系统操作
  • 广东省行业税负率表
  • 一巩固三衔接
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设