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

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

  • 论坛置顶论坛发帖,推广效果不错(论坛置顶功能)

    论坛置顶论坛发帖,推广效果不错(论坛置顶功能)

  • 华为mate30pro发烫怎么回事(mate30pro 发热)

    华为mate30pro发烫怎么回事(mate30pro 发热)

  • 忘记id密码怎么下载软件(忘记id密码怎么退出苹果id)

    忘记id密码怎么下载软件(忘记id密码怎么退出苹果id)

  • 监控晚上没有红外线是不是坏了(监控晚上没有红点)

    监控晚上没有红外线是不是坏了(监控晚上没有红点)

  • qq群转让群主冷却时间(qq群转让群主之后怎么拿回来)

    qq群转让群主冷却时间(qq群转让群主之后怎么拿回来)

  • 荣耀30防水级别(荣耀30防水防尘级别是多少)

    荣耀30防水级别(荣耀30防水防尘级别是多少)

  • 腾讯课堂签到有记录吗(腾讯课堂签到有什么好处)

    腾讯课堂签到有记录吗(腾讯课堂签到有什么好处)

  • 抖音短视频删除对账号有影响吗(抖音短视频删除了怎么恢复作品)

    抖音短视频删除对账号有影响吗(抖音短视频删除了怎么恢复作品)

  • 苹果2a充电伤手机吗(2a充苹果手机)

    苹果2a充电伤手机吗(2a充苹果手机)

  • 手机4g图标消失了(手机4g图标消失了不能上网)

    手机4g图标消失了(手机4g图标消失了不能上网)

  • 微信换手机号有影响吗(微信换手机号有影响吗安全吗)

    微信换手机号有影响吗(微信换手机号有影响吗安全吗)

  • zip跟rar有区别吗(zip和rar一样吗)

    zip跟rar有区别吗(zip和rar一样吗)

  • 路由器有使用年限吗(路由器使用年限是几年)

    路由器有使用年限吗(路由器使用年限是几年)

  • 苹果x怎么锁定屏幕旋转(苹果x怎么锁定屏幕亮度)

    苹果x怎么锁定屏幕旋转(苹果x怎么锁定屏幕亮度)

  • 苹果手表一直显示充电状态开不了机怎么办(苹果手表一直显示导航信息怎么关闭)

    苹果手表一直显示充电状态开不了机怎么办(苹果手表一直显示导航信息怎么关闭)

  • 微信视频聊天费流量吗(微信视频聊天费流量怎么办)

    微信视频聊天费流量吗(微信视频聊天费流量怎么办)

  • 如何去除拼多多免密支付(如何去除拼多多绑定的银行卡)

    如何去除拼多多免密支付(如何去除拼多多绑定的银行卡)

  • 滴滴出行为什么要预付(滴滴出行为什么要先预付车费)

    滴滴出行为什么要预付(滴滴出行为什么要先预付车费)

  • 苹果8p是多少寸(苹果8是多大的屏幕尺寸)

    苹果8p是多少寸(苹果8是多大的屏幕尺寸)

  • 手机视频太长怎么缩短(手机视频太长怎么发微信)

    手机视频太长怎么缩短(手机视频太长怎么发微信)

  • 数据挖掘用什么软件(数据挖掘用什么语言)

    数据挖掘用什么软件(数据挖掘用什么语言)

  • r 17怎么录屏(r17怎么录屏)

    r 17怎么录屏(r17怎么录屏)

  • 转发抖音视频怎么去掉抖音号(转发抖音视频怎么换掉音乐)

    转发抖音视频怎么去掉抖音号(转发抖音视频怎么换掉音乐)

  • linux怎么使用自动校正工具来辅助用户校正终端命令输入?(linux怎么自己写命令)

    linux怎么使用自动校正工具来辅助用户校正终端命令输入?(linux怎么自己写命令)

  • 这几种方法帮你快速实现回到页面顶部(怎样才能帮你)

    这几种方法帮你快速实现回到页面顶部(怎样才能帮你)

  • 计提生产应税产品的分录
  • 会计凭证借贷方向
  • 公司清理固定资产汽车怎么开票
  • 两处工资薪金所得
  • 往来款项包括什么
  • 未填开发票怎么作废
  • 简易计税的进项可以抵扣吗
  • 小规模变更为一般纳税人流程
  • 借支单是借方还是贷方
  • 租入房租装修费摊销
  • 跨月收入账务处理
  • 递延所得税当期发生额
  • 固定资产变动时应如何处理
  • 合作经营利润分配税务处理
  • 员工替公司垫付的费用还没有报销就被开除了
  • 哪些税不适用征管法
  • 计入增值税应税销售额
  • 去年多计提费用,汇算清缴时做纳税调增处理
  • 法人代表借钱给公司可以做短期借款吗
  • 所得税网上申报表
  • 土地增值税纳税地点
  • 教育费附加计算公式
  • 所得税费用什么时候结转到本年利润
  • 关于增值税发票开具的最新规定
  • 所得税不能税前扣除项目
  • 汽修厂纳税多少
  • 工程款发票备注栏必须填写吗
  • 因税负低补缴上年度增值税分录怎么写?
  • 研发费用归集会计分录
  • iphone手机怎么把电话号码转到sim
  • 进项票与实际支出金额不符
  • 利空啥意思
  • 免租期房产税增值税如何计算
  • 苹果今天推送更新内容
  • 减征增值税的项目
  • vue 页面生成pdf
  • 浏览器无痕浏览后警察能查到吗
  • 前端面试题校招
  • 华为od测试岗机试需要怎么准备
  • php加密zend
  • 什么是劳务派遣制员工
  • 小企业会计准则季度报表
  • 专票红冲要不要收回发票联呢?
  • 增值税发票过了两个月怎么作废
  • 会计凭证分为几个部分包括哪些内
  • 出差的招待费应由谁承担
  • sql server 2008有什么用
  • 口罩属于什么经济分类
  • 房地产企业借款利息扣除标准
  • 为什么收到要发1
  • 以公允价值计量计入其他综合收益
  • 税金及附加需不需要计提
  • 火车退票费如何开票
  • 商品流通企业应交那些税费
  • 购入研发设备可以全额抵扣吗
  • 房产契税一般什么时间交
  • 建行单位结算卡如何取现金
  • 成本利润率多少是正常的
  • 福利费属于管理费用还是销售费用
  • 工程施工会计科目及账务处理
  • 如何下载苹果图书
  • win8怎么一键关机
  • 远程桌面登录显示其他用户
  • 安装win7需要激活吗
  • ubuntu 14.4
  • linuxserver docker
  • win8删除所有内容并重新安装windows
  • centos如何操作
  • windows7右下角网络图标不见了怎么办
  • win10任务栏电源图标打不开
  • js call.call
  • perl和shell的区别
  • javascript用处
  • unity gpu优化
  • python仿站软件官网
  • 浙江银行上班时间查询
  • 北京国税局开票流程
  • 临时税务登记纳税有区域限制吗为什么
  • 曲靖市国家税务局杨春天
  • 武汉市第二税务稽查局地址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设