Skip to content

Teleport 挂载容器

基于 BrConfigProvider 实现全局主题配置,支持 DOM 挂载隔离、层级管理、SSR 兼容的企业级 Teleport 组件,作为 BrDialog / BrModal 底层核心依赖。

组件特性

  • 🧩 灵活挂载:支持挂载到 body、指定选择器或 HTMLElement,目标容器不存在时自动创建。
  • 📚 层级管理:多实例堆叠时自动递增 z-index,也支持通过 BrConfigProvider 全局配置或指定固定层级。
  • 🛡️ 样式与隔离:基于 TailwindCSS 实现,支持可选的样式隔离(Shadow DOM / isolation)。
  • 🎬 动画过渡:内置多种挂载/卸载动画(Fade, Zoom, Slide 等),支持主题动画时长联动。
  • 🖱️ 交互控制:内置基于挂载容器的滚动穿透控制和 Escape 键盘事件监听。

基础用法

最简单的用法是直接将内容挂载到 body

Example

自定义容器挂载

可以将内容挂载到指定的节点,如果目标节点不存在,BrTeleport 会自动在 body 下创建它。

Container #demo-teleport-target
Example

多实例堆叠管理

BrTeleport 会自动管理多实例的 z-index,确保后打开的实例在最上层。同时按 ESC 键时,只会触发最上层实例的 escape-key-down 事件。

Example

与 BrDialog 集成

BrTeleport 作为底层组件,可以与 BrConfigProviderBrDialog 等高级组件无缝集成,自动继承全局的主题配置。

Example

主题定制

BrTeleport 内部无缝集成了 BrConfigProvider,可以全局设置 z-index 基数和动画过渡时间。

Example

API

BrTeleport Props

属性名类型默认值说明
tostring | HTMLElement'body'挂载目标,支持 CSS 选择器或 DOM 节点
disabledbooleanfalse是否禁用 Teleport(禁用时就地渲染)
autoCreatebooleantrueto 对应的节点不存在时,是否自动创建
isolationbooleanfalse是否开启样式隔离(添加 isolation 类)
zIndexnumber-固定的层级数值
zIndexStrategy'auto' | 'fixed' | 'config''auto'层级策略,自动递增、固定值或读取全局配置
animation'fade' | 'zoom' | 'slide-up' | 'slide-down' | 'none''fade'挂载/卸载过渡动画类型
animationDurationstring-自定义动画时长(覆盖全局主题配置)
lockScrollbooleanfalse挂载时是否锁定 body 滚动
closeOnEscapebooleanfalse开启后按 ESC 键可触发 escape-key-down 事件
lazybooleanfalse是否在挂载后才渲染内容

BrTeleport Emits

事件名说明回调参数
mount挂载完成时触发(container: HTMLElement)
unmount卸载完成时触发-
escape-key-down开启 closeOnEscape 且当前实例位于最顶层时,按 ESC 键触发(event: KeyboardEvent)

TeleportManager API

如果需要手动管理层级,可以通过导出 TeleportManager 静态类操作:

方法说明
getZIndex(id: string, customZIndex?: number)分配并返回一个新的层级
removeInstance(id: string)移除指定的挂载实例
getTopInstance()获取当前最高层级的实例 ID