Skip to content

XtfOverlay

组件说明

xtf-overlay 是全屏遮罩基础组件,适用于弹窗、加载和需要阻断背景操作的场景。它只负责遮罩与动画,前景内容应以更高 z-index 的同级节点渲染。


基础用法

1. 受控显示

使用 show 控制遮罩可见性。

vue
<template>
  <view>
    <xtf-button label="打开" @click="show = true" /><xtf-overlay :show="show" @click="show = false"
  /></view>
</template>
<script>
export default {
  data() {
    return { show: false }
  }
}
</script>

2. 点击关闭

通过 update:show 同步关闭动画完成后的状态。

vue
<template>
  <view>
    <xtf-button label="显示遮罩" @click="show = true" /><xtf-overlay
      :show="show"
      :opacity="0.6"
      @click="close"
      @update:show="show = $event"
  /></view>
</template>
<script>
export default {
  data() {
    return { show: false }
  },
  methods: {
    close() {
      this.show = false
      uni.showToast({ title: '开始关闭', icon: 'none' })
    }
  }
}
</script>

3. 加载浮层组合

遮罩不提供插槽,加载内容需作为同级节点叠放。

vue
<template>
  <view>
    <xtf-button label="提交" @click="show = true" /><xtf-overlay :show="show" :z-index="100" /><view
      v-if="show"
      class="panel"
      ><xtf-loading text="提交中" /><xtf-button
        size="sm"
        label="完成"
        @click="show = false" /></view>
</view>
</template>
<script>
export default {
  data() {
    return { show: false }
  }
}
</script>
<style>
.panel {
  position: fixed;
  top: 45%;
  left: 25%;
  right: 25%;
  z-index: 101;
  padding: 30rpx;
  background: #fff;
}
</style>

全部属性

属性类型默认值作用描述适用范围
showBooleanfalse控制显示状态必填状态控制
zIndexNumber1遮罩层级与前景层协调时
durationNumber | String300淡入淡出时长,单位 ms调整动画节奏
opacityNumber0.5可见时不透明度轻重遮罩
lockScrollBooleantrue标记锁定背景滚动,H5 有效弹层场景
customClassString''自定义类名局部定制
customStyleString | Object''自定义样式局部定制

事件

事件名称触发时机回调参数参数说明
click点击遮罩时()不会自动关闭,需由业务更新 show
update:show关闭动画结束且遮罩卸载时(value: Boolean)固定为 false

事件使用示例

vue
<template><xtf-overlay :show="show" @click="show = false" @update:show="afterClose" /></template>
<script>
export default {
  data() {
    return { show: true }
  },
  methods: {
    afterClose(value) {
      console.log('overlay visible:', value)
    }
  }
}
</script>

方法

1. open() — 立即渲染并播放打开动画

无参数,返回值为 void。可通过 ref 在声明式控制之外手动打开。

vue
<template>
  <view>
    <xtf-button label="打开" @click="$refs.overlay.open()" /><xtf-overlay ref="overlay"
  /></view>
</template>
<script>
export default {}
</script>

2. close() — 播放关闭动画并卸载遮罩

无参数,返回值为 void;动画结束后触发 update:show(false)

vue
<template>
  <view>
    <xtf-button label="关闭" @click="$refs.overlay.close()" /><xtf-overlay
      ref="overlay"
      :show="true"
  /></view>
</template>
<script>
export default {}
</script>

主题说明

  • 遮罩底色使用 var(--xtf-color-overlay, rgba(15, 23, 42, 0.38))
  • opacity 写入 var(--xtf-overlay-opacity),层级写入 var(--xtf-overlay-z-index)
  • xtf-config-provider 或全局样式覆盖 --xtf-color-overlay 可统一调整主题。

MIT Licensed