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

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

  • airpodspro一只响一只不响是什么原因(为什么airpods pro一只响一只不响为什么)

    airpodspro一只响一只不响是什么原因(为什么airpods pro一只响一只不响为什么)

  • 容器云是什么技术(容器云介绍)

    容器云是什么技术(容器云介绍)

  • 抖音企业号会不会限流(抖音企业号会不会自动关闭了)

    抖音企业号会不会限流(抖音企业号会不会自动关闭了)

  • 拼多多要不要绑定第三方店铺

    拼多多要不要绑定第三方店铺

  • 短信内容不在屏幕显示(短信不在屏幕上显示)

    短信内容不在屏幕显示(短信不在屏幕上显示)

  • 微信注销后还能查到聊天记录吗(微信注销后还能恢复吗)

    微信注销后还能查到聊天记录吗(微信注销后还能恢复吗)

  • 苹果11与11pro的区别(苹果11与11pro的参数)

    苹果11与11pro的区别(苹果11与11pro的参数)

  • 打包发送是什么意思(打包发送是指压缩发送吗)

    打包发送是什么意思(打包发送是指压缩发送吗)

  • 苹果11手机截屏怎么操作(苹果11手机截屏的三种方法)

    苹果11手机截屏怎么操作(苹果11手机截屏的三种方法)

  • 抖音为什么有的视频不能保存本地(抖音为什么有的人不显示ip属地)

    抖音为什么有的视频不能保存本地(抖音为什么有的人不显示ip属地)

  • 淘宝apple store官方旗舰店是真的吗(淘宝apple store官方旗舰店发货慢)

    淘宝apple store官方旗舰店是真的吗(淘宝apple store官方旗舰店发货慢)

  • 为什么抖音没有美颜(为什么抖音没有点赞作品推荐给朋友)

    为什么抖音没有美颜(为什么抖音没有点赞作品推荐给朋友)

  • z370支持9代吗(z370主板可以配第9代cpu吗)

    z370支持9代吗(z370主板可以配第9代cpu吗)

  • hp403d硒鼓的型号(惠普403硒鼓)

    hp403d硒鼓的型号(惠普403硒鼓)

  • 电脑微信开机自动启动取消(电脑微信开机自动启动怎么设置)

    电脑微信开机自动启动取消(电脑微信开机自动启动怎么设置)

  • 怎样关掉华为手机新闻(怎样关掉华为手机负一屏)

    怎样关掉华为手机新闻(怎样关掉华为手机负一屏)

  • 微信收藏别人图片知道吗(微信收藏别人图片别人知道吗)

    微信收藏别人图片知道吗(微信收藏别人图片别人知道吗)

  • 唯品会怎么设置登录名(唯品会怎么设置自动抢货)

    唯品会怎么设置登录名(唯品会怎么设置自动抢货)

  • 全民k歌有必要用声卡吗(全民K歌有必要录整首吗)

    全民k歌有必要用声卡吗(全民K歌有必要录整首吗)

  • 优酷的视频怎么下载到手机(优酷的视频怎么下载到电脑)

    优酷的视频怎么下载到手机(优酷的视频怎么下载到电脑)

  • Windows 10即将推出带有Wonder Bar的Apple Touchbar(微软推出windows1)

    Windows 10即将推出带有Wonder Bar的Apple Touchbar(微软推出windows1)

  • 3-2. SpringBoot项目集成【用户身份认证】实战 【实战核心篇】基于JWT生成和校验Token(springboot项目结构讲解)

    3-2. SpringBoot项目集成【用户身份认证】实战 【实战核心篇】基于JWT生成和校验Token(springboot项目结构讲解)

  • 对java中代理的理解笔记(java代理有几种方式)

    对java中代理的理解笔记(java代理有几种方式)

  • 运输公司税率和税种
  • 劳务服务有什么
  • 公司购买的理财产品所得需要缴纳企业所得税吗?
  • 员工预支工资账务处理
  • 管理费用贷方余额借方是负数怎么结转
  • 计提坏账准备需要纳税调增吗
  • 企业合并固定资产增值的规定
  • 常见的会计凭证有哪些
  • 善意取得虚开专票的条件包括
  • 财务杠杆和经营杠杆的区别
  • 小规模纳税人发票图片
  • 购进商品交印花税
  • 银行回单少了一笔
  • 其他贷款服务的内容包括
  • 预缴税款后怎么开票
  • 工业企业小规模纳税人的认定标准
  • 小规模季度超过30万是全额纳税吗
  • 增值税发票抵扣进项税什么意思
  • 外购商品对外赠送增值税怎么算
  • 公允价值变动增加在借方还是贷方
  • 公司汽车一年可以用多少油费
  • 小规模企业低值易耗品摊销方法
  • 公司做贷款
  • 土地租赁期间政府征收
  • 联想笔记本e49系列哪款好
  • 生产车间购入材料会计分录
  • Win10 64位正式版系统安装方法全过程图解(U大师)
  • 高新技术企业所得税优惠政策最新2022
  • 公交车的乘车凭证能报销吗
  • 所有者权益变动表范本
  • cesium加载s3m
  • 记载资金的账簿印花税的税率是多少
  • 其他应付款转资本公积股东决议
  • 湘菜尖椒炒肉的做法
  • PHP:JDToJulian()的用法_日历函数
  • php ssl
  • python进行傅立叶变换
  • 两借两贷属于复合会计分录吗
  • 加计抵减现代服务税率
  • thinkphp jquery实现图片上传和预览效果
  • 公司支付工伤赔偿,是先签字还是先打钱
  • 成本降低率是什么意思
  • 图像分割csdn
  • 商品流通的企业
  • 厂房没租出去要交税吗
  • 稽查增值税跨年了销项税额如何转出
  • 承租人对融资租赁的处理原则
  • 贴现需要什么手续
  • 零税项目
  • 购买实验材料入什么科目
  • 固定资产投资子公司
  • T-SQL语句修改数据表属性
  • 解决PostgreSQL服务启动后占用100% CPU卡死的问题
  • 一般纳税人怎么开3个点普票
  • 小企业会计准则和一般企业会计准则的区别
  • 税收滞纳金能不能超过税款
  • 报废资产处置账务处理
  • 差旅费的会计处理
  • 辞退福利是入工资还是福利费
  • 预提与计提的区别在哪里
  • 公司员工聚餐属于什么费用
  • 加油账务处理
  • 收到快递赔付款怎么做账
  • sql根据名字查询
  • mysql新手视频教学
  • 电脑如何进入bios选择u盘启动
  • win8如何添加启动项
  • linux哪些方法可以查看命令的详细信息
  • win7重新安装windows
  • win10如何打开ie8
  • 分享五个有用的东西
  • 人机交互编程
  • shell中判断字符串
  • 欢欢长大了的童年
  • EditText 点击事件小问题
  • python class
  • animate怎么整个图层移动
  • jquery dom对象
  • python toga
  • 云南省电子税务局登录入口
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设