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

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

  • 华为watch3电池续航时间多久(华为watch3电池续航感受)

    华为watch3电池续航时间多久(华为watch3电池续航感受)

  • 华为p50怎么关闭hd(华为p50怎么关闭纯净模式)

    华为p50怎么关闭hd(华为p50怎么关闭纯净模式)

  • 支付宝芭芭农场怎么换商品(支付宝芭芭农场怎么换果树)

    支付宝芭芭农场怎么换商品(支付宝芭芭农场怎么换果树)

  • 拼多多拼小圈怎么关闭(拼多多拼小圈怎么关闭自己的动态)

    拼多多拼小圈怎么关闭(拼多多拼小圈怎么关闭自己的动态)

  • 苹果xr为何每天不停要验证id(苹果xr一天多次黑屏什么情况)

    苹果xr为何每天不停要验证id(苹果xr一天多次黑屏什么情况)

  • 腾讯企业邮箱密码忘了怎么办(腾讯企业邮箱密码忘了怎么重置密码)

    腾讯企业邮箱密码忘了怎么办(腾讯企业邮箱密码忘了怎么重置密码)

  • 内存1t是多少g(内存1t多大)

    内存1t是多少g(内存1t多大)

  • 抖音里的擦拭漫画脸怎么制作的(抖音里擦拭变成漫画的特效是什么)

    抖音里的擦拭漫画脸怎么制作的(抖音里擦拭变成漫画的特效是什么)

  • 三星s8有红外线功能吗(三星s8红外线功能怎么开)

    三星s8有红外线功能吗(三星s8红外线功能怎么开)

  • ios设备是什么意思(iphone设备)

    ios设备是什么意思(iphone设备)

  • ipad air充电要充多久(ipad充电要冲到100吗)

    ipad air充电要充多久(ipad充电要冲到100吗)

  • wlan常见的拓扑结构有哪些(wlan的网络拓扑)

    wlan常见的拓扑结构有哪些(wlan的网络拓扑)

  • u盘几十年不用东西会丢吗(u盘很多年不用会坏吗)

    u盘几十年不用东西会丢吗(u盘很多年不用会坏吗)

  • 西文字符所采用的编码(西文字符所采用的编码几位二进制)

    西文字符所采用的编码(西文字符所采用的编码几位二进制)

  • 小米8陀螺仪在设置哪里(小米陀螺仪在哪里设置)

    小米8陀螺仪在设置哪里(小米陀螺仪在哪里设置)

  • oppor11怎么强制关机(oppor11怎么强制格式化)

    oppor11怎么强制关机(oppor11怎么强制格式化)

  • 快手怎么找谁戳了自己(快手里我戳的谁怎么着)

    快手怎么找谁戳了自己(快手里我戳的谁怎么着)

  • 淘宝达人怎么修改昵称(淘宝达人账号怎么弄)

    淘宝达人怎么修改昵称(淘宝达人账号怎么弄)

  • 手机上fido是什么意思(华为手机上的fido是干什么的)

    手机上fido是什么意思(华为手机上的fido是干什么的)

  • 华为碎屏险在哪里查看(华为碎屏险在哪里买划算?)

    华为碎屏险在哪里查看(华为碎屏险在哪里买划算?)

  • 华为花粉俱乐部怎么申请升级(华为花粉俱乐部官网)

    华为花粉俱乐部怎么申请升级(华为花粉俱乐部官网)

  • 苹果怎么用数据下载超过200(苹果怎么用数据下载超过200 MB的应用)

    苹果怎么用数据下载超过200(苹果怎么用数据下载超过200 MB的应用)

  • 华为p20支持微信美颜吗(华为p20支持微信双开吗)

    华为p20支持微信美颜吗(华为p20支持微信双开吗)

  • 小米8如何开启快充(小米8如何开启root权限)

    小米8如何开启快充(小米8如何开启root权限)

  • 开具增值税发票哪些情形不用交税?
  • 房产赠与税什么时候开始的
  • 企业进口葡萄酒也要缴纳消费税吗
  • 周转材料登三栏式明细账吗
  • 小规模纳税人怎么变成一般纳税人
  • 分公司怎么分配股权
  • 个人承包工程怎么交个税
  • 电子行程单自己打印
  • 合同负债与预计负责区别
  • 净资产出资账务处理流程
  • 预缴增值税时可抵扣吗
  • 预收账款年底要确认收入吗
  • 两笔不同业务能做一个凭证吗
  • 运输营改增
  • 建筑业预交的增值税
  • 纳税人状态怎么填写
  • 增值税发票的帐号怎么查
  • 计提工资怎么做账务处理
  • 公司账上没钱还假发工资违法吗
  • 广告费扣税
  • 企业购买结构性存款会计处理
  • 计提减值的固定资产处置
  • 个体工商户比如
  • 临时取得收入开具发票
  • 产品打样费计入什么科目
  • 4s店帮买保险后会哪些资料要给我的
  • 公司原因领不了失业保险要赔偿吗
  • 个税申报已经扣了怎么办
  • 华为手机屏幕下的三个功能键设置方法
  • 什么是毛利润和纯利润
  • 贴息费率
  • macos big sur使用
  • php 表单
  • 办公经费包括工资吗
  • php静态函数
  • 微信小程序中如何打开不加检验文件的网页
  • web前端基础教程
  • 土地出让金返还的税务处理
  • 叮咚你有一份好运请查收图片
  • php单例模式懒汉和饿汉
  • 增值税纳税申报操作流程
  • 以前年度损益调整是什么意思
  • 上月普通发票怎么作废
  • vue网上商城项目
  • python 如何调用c
  • 折扣和佣金合法的两个条件是什么?
  • 职工教育经费支出比例
  • python搜索函数
  • 购辅助材料会计分录
  • 什么企业进项多
  • 即征即退收入不能税前扣除
  • 民办非企业单位是私立还是公立
  • 租赁费的增值税可以抵扣吗
  • 公司的装修费计入什么科目
  • 亏损做t计算方法
  • 失控发票已补交什么意思
  • 事业单位大型修缮与办公用房维修费区别
  • 职工福利费税前扣除标准是应发工资还是实发工资
  • 按照现行会计制度的规定,下列票据中
  • 资产负债表税务局能看到吗
  • 企业经营情况怎么写版本
  • 营业成本包括哪些会计科目
  • mysql的用户管理与权限管理
  • win8系统没有无线网络连接
  • win7删除通知区域图标
  • win8.1如何关闭开机密码
  • windows10更新最新版本
  • windows mobile10
  • php.ini linux
  • Win7系统怎么打开蓝牙
  • win8系统开机怎么进入桌面
  • js小球与边框碰撞反弹
  • 优化了一些已知问题是什么意思安不安装
  • jquery弹出窗口的方法
  • 批处理中copy怎么用
  • nodejs image
  • node.js和ajax的顺序
  • 车辆购置税二维码扫描用什么扫
  • 服务合同需要交个人所得税嘛
  • 福建省网上税务办事大厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设