Vue内置组件:teleport和transition组件

teleport的作用

该组件可以将指定内容渲染到特定容器中,而不受 DOM 层级的限制

应用场景

当蒙层内容在一个组件中时,蒙层内容是无法遮挡住全部内容的,因此,需要使用teleport将蒙层内容渲染到更全局的组件中

如果不使用teleport蒙层只是在组件内部渲染
在这里插入图片描述
使用teleport后组件就作为body子元素渲染

 <teleport to="body">
    <div class="mask">test</div>
  </teleport>

在这里插入图片描述

这样就把container元素作为body元素的子节点渲染

to

to属性指定teleport组件中的子节点渲染的目标节点

disabled

disabled属性用于禁用teleport组件

<teleport to="body" :disabled="true">
        <div class="mask">test</div>
      </teleport>

当我们把disabled属性设置为true的时候被teleport包含的内容就不会被渲染到to属性指定的元素中
在这里插入图片描述
这样我们就可以动态设置teleport或者根据不同场景使用teleport组件

实现原理

teleport组件要渲染的内容被包含在teleport组件内作为teleport组件的插槽内容,teleport组件在挂载时直接将其子节点渲染到to属性指定的元素中。teleport组件的虚拟DOM中有一个类似isTeleport的属性标识组件是否是teleport组件,如果是teleport组件就使用teleport组件的渲染逻辑处理。

transition作用

transition组件用于元素过渡动画的实现

应用场景

主要用于元素和组件的动效实现,常用于组件切换、菜单折叠与伸展的切换以及业务动画的实现

name

transition在使用时需要给一个name属性值,该属性值作为指定CSS 类名的前缀,vue提供了6个特定CSS类名,这些类名在过渡的不同阶段赋值给元素从而实现过渡效果,这些类名可以分为入场过渡和离场过渡。

name-enter-from:过渡元素入场开始时的状态
name-enter-to:过渡元素入场结束时的状态

两个类名描述了,元素进入页面中从什么状态过渡到什么状态

name-leave-from:过渡元素结束时的开始状态
name-leave-to:过渡元素结束时的结束状态

这两个类名描述了元素离开页面从什么状态过渡到什么状态

name-enter-active:过渡元素入场时过渡的规则
name-leave-active:过渡元素离场时过渡的规则

这两个类名用来控制过渡的快慢、过渡的属性等信息

实现原理

Transition 组件本身不会渲染任何额外的内容,它只是通过默认插槽读取过渡元素,并渲染需要过渡的元素。

Transition 组件的作用,就是在过渡元素的虚拟节点上添加 transition 相关的钩子函数

经过 Transition 组件的包装后,内部需要过渡的虚拟节点对象会被添加一个 vnode.transition 对象

这个对象下存在一些与 DOM 元素过渡相关的钩子函数,渲染器在渲染需要过渡的虚拟节点时,会在合适的时机调用附加到该虚拟节点上的过渡相关的生命周期钩子函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端御书房

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值