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

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

  • 量子点屏幕缺点(量子点屏幕啥意思)

    量子点屏幕缺点(量子点屏幕啥意思)

  • 荣耀x10max可以支持多屏协同吗(荣耀x10max可以加内存卡吗)

    荣耀x10max可以支持多屏协同吗(荣耀x10max可以加内存卡吗)

  • 企业微信会议显示未处理(企业微信会议显示录制中)

    企业微信会议显示未处理(企业微信会议显示录制中)

  • 怎么看下载软件历史(怎么看下载软件是不是官方)

    怎么看下载软件历史(怎么看下载软件是不是官方)

  • 段前间距不显示(为什么标题段前间距不显示)

    段前间距不显示(为什么标题段前间距不显示)

  • 电脑应该在实体店还是网上买(电脑到实体店买好还是网上买好)

    电脑应该在实体店还是网上买(电脑到实体店买好还是网上买好)

  • 腾讯会议怎么看是不是静音的(腾讯会议怎么看参会时长)

    腾讯会议怎么看是不是静音的(腾讯会议怎么看参会时长)

  • 淘宝店铺会自动注销吗(淘宝店铺会自动注销吗,那一千保证金去哪里了)

    淘宝店铺会自动注销吗(淘宝店铺会自动注销吗,那一千保证金去哪里了)

  • 微信人脸冻结只能人脸解冻吗(微信人脸冻结能冻结多久)

    微信人脸冻结只能人脸解冻吗(微信人脸冻结能冻结多久)

  • 手机蓝屏是怎么回事(手机蓝屏是怎么样的)

    手机蓝屏是怎么回事(手机蓝屏是怎么样的)

  • 显卡能装2个吗(显卡可以安几个)

    显卡能装2个吗(显卡可以安几个)

  • qq消息列表怎么关闭(qq消息列表怎么设置自定义背景)

    qq消息列表怎么关闭(qq消息列表怎么设置自定义背景)

  • 荣耀20s开发者选项怎么打开(荣耀20s开发者选项)

    荣耀20s开发者选项怎么打开(荣耀20s开发者选项)

  • 荣耀v20怎样锁定后台(华为荣耀v20bl锁)

    荣耀v20怎样锁定后台(华为荣耀v20bl锁)

  • 苹果11pro max小圆点在哪里(苹果11promax小圆点怎么设置轻点反回)

    苹果11pro max小圆点在哪里(苹果11promax小圆点怎么设置轻点反回)

  • 微信签名怎么改(微信签名怎么改字体)

    微信签名怎么改(微信签名怎么改字体)

  • m711m是什么型号(m711h是什么型号手机)

    m711m是什么型号(m711h是什么型号手机)

  • 流量节省怎么关闭(流量节省在哪关闭)

    流量节省怎么关闭(流量节省在哪关闭)

  • 为什么快手极速版金币越来越少(为什么快手极速版没有赚钱功能)

    为什么快手极速版金币越来越少(为什么快手极速版没有赚钱功能)

  • 抖音有网页版吗(抖音网页版官网)

    抖音有网页版吗(抖音网页版官网)

  • 高德地图没有语音播报怎么回事(高德地图没有语音助手)

    高德地图没有语音播报怎么回事(高德地图没有语音助手)

  • 苹果cpu在哪里看(iphone cpu查看)

    苹果cpu在哪里看(iphone cpu查看)

  • Linux禁止ping或允许ping的设置方法(linux禁止ip访问80端口)

    Linux禁止ping或允许ping的设置方法(linux禁止ip访问80端口)

  • win10怎么设置休眠(window10如何设置休眠时间)

    win10怎么设置休眠(window10如何设置休眠时间)

  • 应交增值税是什么意思
  • 应交增值税月末出现借方余额怎么处理
  • 附加税申报表怎么做
  • 福利费的进项税额会计分录
  • 什么叫汇总征税
  • 小规模减免增值税要交企业所得税吗
  • 税率变更后账务怎么处理
  • 如何理解合并报表中少数股东损益的抵消
  • 小微企业条件2018
  • 两免三减半的范围
  • 小规模纳税人减半征收
  • 延期申报预缴税款比例
  • 增值税采用
  • 银行承兑汇票贴现率多少
  • 委托加工的账务处理
  • 未按期预缴企业个税
  • 企业申请核定征收的要求
  • 年终奖个税筹划临界点
  • 专票密码区出来了一点有关系吗
  • 未分配利润为什么不分配
  • 个人所得税生产经营所得
  • php的数组函数
  • 安装下载应用
  • 半成品月末账务处理
  • 汇票本票支票的相同点和不同点
  • php限制登录次数
  • 股票金融资产被称为
  • node启动本地服务
  • 斯洛文尼亚nba球星是谁
  • 什么是跨域以及跨境电商
  • php提交post数据
  • php 引用
  • 小客车能用多少年
  • 公司购买办公用品会计分录
  • php上传不了文件
  • 哪些税是季报
  • 暂估入库成本结转处理低于实际成本怎么办
  • 房地产预缴增值税计税依据
  • 完整的css代码案例
  • vue生命周期钩子函数
  • 车间领用五金配件入什么科目
  • 汽车租赁发票账务怎么开
  • 置换房产入账价值的确定根据什么
  • 只有发票没有银行回单怎么做账
  • 材料报废如何做分录
  • 未开票收入如何申报
  • 信用卡逾期滞纳金怎么收取
  • 计提社保和工资一起怎么做账
  • 印花税怎么申报缴纳
  • 小规模附加税减半征收什么时候开始
  • 餐饮行业月末结转成本怎么算
  • 酒店会计做账流程视频
  • freebsd挂载ntfs
  • windows xp/2000/2003系统自动登陆设置方法无需输入密码
  • windows7 ie
  • gzip压缩慢
  • calctool
  • mac怎么设计网页
  • opensuse安装显卡驱动
  • 如何隐藏应用软件
  • 系统解决问题的方法
  • centos 7 安装
  • linux打成zip包
  • linux安装有几种方法
  • excel的exceladdinrd加载项出现问题
  • jquery地址
  • python 邻接表
  • nodequery
  • node.js安装模式选择
  • 详解九章算法
  • javascriptj
  • android get
  • shell脚本windows
  • python常用操作运算符
  • javascript学习指南
  • fragment详解
  • 房产营业税满2年怎么算
  • 开错发票怎么投诉?
  • 北医三院预约号最晚几点取
  • 城市维护建设税属于什么科目
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设