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

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

  • 京东如何退货申请退款(京东如何退货申请退款先要确定收货吗)

    京东如何退货申请退款(京东如何退货申请退款先要确定收货吗)

  • 确认收货后换货安全吗(确认收货后换货运费险怎么理赔)

    确认收货后换货安全吗(确认收货后换货运费险怎么理赔)

  • 京东配送退货多久退款(京东配送退货多久)

    京东配送退货多久退款(京东配送退货多久)

  • 微信里的购物怎么变成京喜了(微信里的购物怎么找)

    微信里的购物怎么变成京喜了(微信里的购物怎么找)

  • 怎么把a3排版成a4大小(怎么将a3排版直接转换成a4排版)

    怎么把a3排版成a4大小(怎么将a3排版直接转换成a4排版)

  • oppo最小的音量还是大(opporeno最小的音量还是大)

    oppo最小的音量还是大(opporeno最小的音量还是大)

  • 上网方式dhcp是什么意思(上网模式dhcp)

    上网方式dhcp是什么意思(上网模式dhcp)

  • 华为mate30pro充满电自动断电吗(mate30pro充电多久满)

    华为mate30pro充满电自动断电吗(mate30pro充电多久满)

  • iphone11pro是6g运存吗(iphone11pro到底是4g还是6g)

    iphone11pro是6g运存吗(iphone11pro到底是4g还是6g)

  • 美版卡贴机无服务解决办法(美版卡贴机无服务)

    美版卡贴机无服务解决办法(美版卡贴机无服务)

  • 苹果11手机竖屏锁定怎么设置(苹果11手机竖屏照片怎么改为横屏)

    苹果11手机竖屏锁定怎么设置(苹果11手机竖屏照片怎么改为横屏)

  • 怎么把视频保存到相册(怎么把视频保存到电脑上)

    怎么把视频保存到相册(怎么把视频保存到电脑上)

  • 像素多少算高清(相机4800万像素算高吗)

    像素多少算高清(相机4800万像素算高吗)

  • 双频gps要不要开

    双频gps要不要开

  • mkv是什么文件格式(mkv1是什么文件格式)

    mkv是什么文件格式(mkv1是什么文件格式)

  • 华为nce al10叫什么(华为nce—al10)

    华为nce al10叫什么(华为nce—al10)

  • 电脑cpu后面的字母是什么意思(电脑cpu后面的字母p)

    电脑cpu后面的字母是什么意思(电脑cpu后面的字母p)

  • word怎么设置页眉边距(word怎么设置页面纸张大小)

    word怎么设置页眉边距(word怎么设置页面纸张大小)

  • 怎么把qq相册转移到另一个qq上(怎么把QQ相册转成文件)

    怎么把qq相册转移到另一个qq上(怎么把QQ相册转成文件)

  • 碎屏险可以换几次(碎屏险可以换新机吗)

    碎屏险可以换几次(碎屏险可以换新机吗)

  • 华为m5怎么改分辨率(华为m5怎么改分身模式)

    华为m5怎么改分辨率(华为m5怎么改分身模式)

  • 台式电脑可以乱换显卡吗(台式电脑乱线如何整理)

    台式电脑可以乱换显卡吗(台式电脑乱线如何整理)

  • vivoiqoo是否防水(vivoiqoo手机防水吗?)

    vivoiqoo是否防水(vivoiqoo手机防水吗?)

  • mate30pro怎么装手机卡(华为mate 30 pro怎么装手机卡)

    mate30pro怎么装手机卡(华为mate 30 pro怎么装手机卡)

  • iOS9.1如何越狱?iOS9.1 Mac版完美越狱图文教程(ios9.3.5如何越狱)

    iOS9.1如何越狱?iOS9.1 Mac版完美越狱图文教程(ios9.3.5如何越狱)

  • 取得的证券投资业绩
  • 领用工程物资的账务处理
  • 增值税税率变化时间节点
  • 小微企业减免的增值税账务处理
  • 金税四期什么时候全国运行
  • 营运资产周转次数平均值
  • 发票专用章换了需要登记吗
  • 专用基金计入什么科目
  • 没有土地使用证可以过户吗
  • 非货币性资产交换补价大于25%的会计处理
  • 本月开的发票次月预缴如何做会计分录呢?
  • 在建工程完工结转
  • 进项转出后还能转入吗
  • 超限量领购发票审批通过后
  • 修理厂专票怎么开
  • 重疾险可以扣税吗
  • 销售商品会计凭证
  • 在PDF里怎么将A4缩小转换为一半打印出来
  • 营改增的作用
  • 电子承兑到期收款怎么做账务
  • 出租车库收入是否需要计算缴纳土地增值税
  • 土地使用权与房屋所有权不一致
  • 银行短期理财利息怎么算
  • 库存现金进账单会计分录
  • 个人所得税0元算不算缴税
  • 预付卡发给员工如何入账
  • mac上安装homebrew
  • win11windows安全中心打不开
  • 没有劳动合同不给工资怎么办
  • 来电转接怎么设置空号
  • 上半年的业务总结几句话
  • 免税和免征增值税是一个意思么
  • 土建基础是什么意思
  • 发票开错重新开票怎么做账务处理?
  • 出口退税率的调整方法
  • php不能通过浏览器运行吗
  • php操作mysql数据库
  • 深圳杯2020c题
  • 毕业设计基于Linux系统的NFS服务器搭建
  • 与下级往来账户贷方核算的内容有
  • 对附属单位补助的资金性质是财政预算资金
  • 固定资产租赁费属于什么费用
  • 研发费用没有发票怎么做账
  • 网上银行跨行转账手续费
  • 哪些企业可以不计提盈余公积
  • 进项税销项税抵扣分录
  • 港币转人民币差多少钱
  • 销售商品发生的运输费计入什么科目
  • 企业相关成本费用有哪些
  • 递延所得税资产怎么计算
  • 记账凭证必须具备的基本内容
  • 发票报销是什么流程
  • 退货时的会计分录怎么做
  • 工业企业销售商品
  • mysql 错误1067
  • redhat系统安装gvim
  • win7系统激活不成功怎么办
  • win8系统怎么清理缓存
  • 神舟hasee笔记本测评
  • wysafe.exe是什么
  • 安装centos7.0
  • unity3d连接数据库
  • js转义字符串
  • 获取本地ip地址失败
  • js继承原型链
  • 请问在javascript程序中
  • ubuntu下安装visual studio
  • javascript运用
  • javascript高级程序设计最新版
  • javascript学习指南
  • JavaScript弹出窗口
  • js简单实现图片轮播
  • js register
  • js封装是什么意思
  • 浙江省国税电子税务局如何新增企业
  • 专票增额怎么办手续
  • 非正常户记录
  • 临时占用耕地是否需要缴纳城镇土地使用税
  • 2021年吉林省城乡居民基础养老金是多少
  • 江苏网上税务局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设