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

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

  • 小米air2se怎么恢复出厂设置(小米air2s恢复)

    小米air2se怎么恢复出厂设置(小米air2s恢复)

  • 如何恢复电脑出厂设置(如何恢复电脑出场系统)

    如何恢复电脑出厂设置(如何恢复电脑出场系统)

  • 七天学堂怎么注册(七天学堂怎么注册账号新版)

    七天学堂怎么注册(七天学堂怎么注册账号新版)

  • 华为有语音助手吗?叫什么名字(华为有语音助手的机型)

    华为有语音助手吗?叫什么名字(华为有语音助手的机型)

  • 苹果11电量怎么显示数字(苹果11电量怎么显示)

    苹果11电量怎么显示数字(苹果11电量怎么显示)

  • 华为怎么给app改名字(华为怎么改软件)

    华为怎么给app改名字(华为怎么改软件)

  • 朋友圈怎么定位在其他地方(朋友圈怎么定位别的城市位置)

    朋友圈怎么定位在其他地方(朋友圈怎么定位别的城市位置)

  • 在下划线上输入文字怎么让下划线不会变长(在下划线上输入文字怎么让下划线不消失)

    在下划线上输入文字怎么让下划线不会变长(在下划线上输入文字怎么让下划线不消失)

  • 电脑微信怎么下载(电脑微信怎么下载安装)

    电脑微信怎么下载(电脑微信怎么下载安装)

  • p40pro屏幕是哪家的(p40pro屏幕是什么品牌)

    p40pro屏幕是哪家的(p40pro屏幕是什么品牌)

  • soul隐身发瞬间好友能看到吗(soul隐身发瞬间怎么发)

    soul隐身发瞬间好友能看到吗(soul隐身发瞬间怎么发)

  • 网易uu手机跟电脑会员通用吗(手机网易uu和电脑网易uu)

    网易uu手机跟电脑会员通用吗(手机网易uu和电脑网易uu)

  • 充电线三个种类是(充电线三个种类区别)

    充电线三个种类是(充电线三个种类区别)

  • 很多手机放在一起会不会有影响(很多手机放在一起会不会耗电)

    很多手机放在一起会不会有影响(很多手机放在一起会不会耗电)

  • 手机屏幕有紫外线辐射吗(手机屏幕有紫外线红外线吗)

    手机屏幕有紫外线辐射吗(手机屏幕有紫外线红外线吗)

  • 华为watch gt2时尚版和运动版区别

    华为watch gt2时尚版和运动版区别

  • ps怎么给字体加白边(ps怎么给字体加颜色)

    ps怎么给字体加白边(ps怎么给字体加颜色)

  • 淘宝下单后还能备注吗(淘宝下单后还能买运费险吗)

    淘宝下单后还能备注吗(淘宝下单后还能买运费险吗)

  • 安卓怎么看airpods电量(安卓怎么看AirPodspro电量)

    安卓怎么看airpods电量(安卓怎么看AirPodspro电量)

  • 微信界面怎么设置密码(微信界面怎么设置背景图)

    微信界面怎么设置密码(微信界面怎么设置背景图)

  • oppo拦截电话在哪里查看(oppo拦截电话在哪里打开)

    oppo拦截电话在哪里查看(oppo拦截电话在哪里打开)

  • ca数字证书是什么东西(ca数字证书是什么时候取消的)

    ca数字证书是什么东西(ca数字证书是什么时候取消的)

  • 云盘在什么地方(云盘存储在什么地方)

    云盘在什么地方(云盘存储在什么地方)

  • windows7如何调整亮度(windows7如何调整电脑屏幕亮度)

    windows7如何调整亮度(windows7如何调整电脑屏幕亮度)

  • JavaScript核心技术之JSON详解(javascript核心技术)

    JavaScript核心技术之JSON详解(javascript核心技术)

  • 纳税人未缴少缴税款
  • 初税亩是什么意思
  • 年初存货跌价准备余额是上年末结转的吗
  • 出口货物的报关时限为装货的24小时以前
  • 国际机票可以抵扣进项税吗
  • 应收票据和应收账款的区别举例
  • 增值税都有哪些科目
  • 取得失控发票
  • 合作建房的土地出让金在土地增值税中可以加计扣除嘛
  • 应收账款转让的会计处理
  • 事业单位破产清算程序规定
  • 企业将活期存款转为定期时
  • 收到别的公司的转账支票
  • 非本单位费用列支 违反
  • 单位预付卡
  • 收到技术咨询费摘要
  • 实收资本退还
  • 员工异地交纳保险怎么交
  • 小规模企业营业税
  • 劳务费发票是几个点的税率
  • 个税税务稽查
  • 企业所得税报表模板
  • 增值税已抵扣还能退税吗
  • 非汉语是什么意思
  • 统一员工行为规范
  • 税务稽查是什么
  • 小规模纳税人 行业
  • 工程未结算能主张工程款吗
  • 小微企业免税销售额一栏怎么填
  • 企业会计制度怎么备案
  • 银行回单箱费会扣吗
  • 2023年王者荣耀世界杯
  • 金蝶核算项目明细表
  • win10桌面窗口管理器gpu占用高
  • 事业单位财政拨款是编制吗
  • vue页面获取url参数
  • 巨大的冰柱造句
  • vue默认首页
  • 如何解决焦虑
  • 外籍个人取得的现金住房补贴所得免征个人所得税吗
  • 购进设备抵扣税额
  • 未达起征点销售额和小微企业免税销售额
  • php8.0 特性
  • mysql表中数据
  • 什么情况可以行政拘留不予执行
  • 进口关税和增值税怎么做账
  • 织梦系统基本参数
  • java sc
  • 织梦模板官网
  • python计算集合交集并集个数
  • Windows2003 SQL2005添加系统用户修改系统登录密码
  • 企业专利权拥有人是指
  • 固定资产提前报废当月计提折旧吗
  • 其他综合收益如何计算所得税
  • 公司按揭贷款
  • 并购贷款是固定资产贷款吗
  • 出口货物两张报关单
  • 费用预算表怎么做
  • win10文字模糊怎么调整
  • centos7修改网络
  • windrv.exe
  • win8更新一直停着不动
  • win8切换管理员账户
  • win10系统无法更改
  • winxp中网桥Bridge功能概述及配置注意事项
  • sxs.exe病毒
  • macbookpro如何开启查找我的mac
  • os x10.8.5
  • win102021年1月大更新
  • vsftp命令
  • css使用教程
  • express中间件面试题
  • 安卓网络编程面试题
  • node.js使用教程
  • python里面颜色
  • python字符类型有哪些
  • 西安市经开区管委会官网
  • 个人所得税自行纳税申报表(A表)怎么填写
  • 营业执照增加项目怎么办理
  • 地税逾期了怎么申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设