Skip to content

FxOverlay 遮罩层

全屏固定定位的遮罩底层组件,提供遮罩背景 + 点击关闭能力。主要被 FxDialog / FxDrawer / FxMsgBox 内部消费,也可独立使用。

通常不需要直接使用 FxOverlay。需要模态弹层时,优先使用 FxDialog(居中弹窗)、FxDrawer(侧边抽屉)或 FxMsgBox(消息框),它们内部已集成遮罩。

基础用法

mask 控制是否显示半透明遮罩背景;z-index 控制层叠顺序。点击遮罩触发 click 事件。

vue
<FxOverlay :z-index="1000" @click="handleClick">
  <div style="position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)">
    遮罩上的内容
  </div>
</FxOverlay>

自定义遮罩类名

通过 overlayClass 为遮罩添加自定义 CSS 类。

自定义遮罩事件

customMaskEventtrue 时禁用内置点击关闭逻辑,由消费方自行监听处理。

API

Attributes

属性说明类型默认值
mask是否显示遮罩(半透明背景)。false 时渲染透明占位层booleantrue
custom-mask-event是否由消费方自行处理遮罩点击事件booleanfalse
overlay-class遮罩自定义类名string | string[] | Record<string, boolean>
z-index层叠顺序string | number

Events

名称说明类型
click点击遮罩时触发(custom-mask-event 为 true 时不触发)(evt: MouseEvent) => void

Slots

名称说明
default遮罩层上渲染的内容

实现说明

两种渲染模式

模式mask行为
遮罩模式true(默认)渲染带 .fx-overlay 类名 + 半透明背景的遮罩层,使用 useSameTarget 处理点击(确保 mousedown/mouseup 在同一元素才触发 click,防止拖拽误关)
占位模式false渲染透明、无背景的全屏 fixed 层,仅提供 z-index 层叠上下文

点击处理

内置 useSameTarget 逻辑:只有 mousedown 和 mouseup 在同一个元素上时,才触发 click 事件。当 customMaskEventtrue 时,该逻辑被绕过,消费方需自行处理 click / mousedown / mouseup。

样式 token

遮罩背景色使用 --color-mask(CSS 变量,定义于 @fx/styles_popup.scss),亮色模式为 rgba(0,0,0,0.5),暗色模式为 rgba(0,0,0,0.85)

局部引入

ts
import { FxOverlay } from "@fx/components"