Skip to content

Overlay 遮罩层 - Vant 4

🎭 Overlay 遮罩层

🎯 介绍

Overlay 组件创建一个遮罩层,用于强调特定的页面元素,并阻止用户进行其他操作。让页面焦点更加突出!

📦 引入

通过以下方式来全局注册组件,更多注册方式请参考组件注册

js
import { createApp } from'vue'; import { Overlay } from'vant'; const app = createApp(); app.use(Overlay);

🎯 代码演示

🔧 基础用法

最简单的遮罩层,就像给页面蒙上一层神秘面纱 🎭

html
<template>
  <div>
    <van-button type="primary" @click="show = true">显示遮罩层</van-button>
    <van-overlay :show="show" @click="show = false" />
  </div>
</template>

<script setup>
import { ref } from 'vue';

const show = ref(false);
</script>

📦 嵌入内容

在遮罩层上放置任何内容,让重要信息脱颖而出 ✨

html
<template>
  <div>
    <van-button type="primary" @click="show = true">嵌入内容</van-button>
    <van-overlay :show="show" @click="show = false">
      <div class="wrapper">
        <div class="block" @click.stop>
          <h3>这是嵌入的内容 📝</h3>
          <p>点击遮罩层外部可以关闭</p>
          <van-button type="primary" @click="show = false">关闭</van-button>
        </div>
      </div>
    </van-overlay>
  </div>
</template>

<script setup>
import { ref } from 'vue';

const show = ref(false);
</script>

<style>
.wrapper {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
}

.block {
  width: 120px;
  height: 120px;
  background-color: #fff;
  border-radius: 8px;
  padding: 20px;
  text-align: center;
}
</style>

🔢 设置 z-index

控制遮罩层的显示层级,让它在合适的位置出现 📚

html
<template>
  <div>
    <van-button type="primary" @click="show = true">高层级遮罩</van-button>
    <van-overlay :show="show" :z-index="100" @click="show = false">
      <div class="wrapper">
        <div class="block" @click.stop>
          <p>z-index: 100 🔝</p>
          <van-button size="small" @click="show = false">关闭</van-button>
        </div>
      </div>
    </van-overlay>
  </div>
</template>

<script setup>
import { ref } from 'vue';

const show = ref(false);
</script>

<style>
.wrapper {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
}

.block {
  width: 120px;
  height: 80px;
  background-color: #fff;
  border-radius: 8px;
  padding: 20px;
  text-align: center;
}
</style>

API

Props

参数说明类型默认值
show是否展示遮罩层,控制遮罩的显示隐藏 👁️booleanfalse
z-indexz-index 层级,控制遮罩的显示层次 📚number | string1
duration动画时长,单位秒,设置为 0 可以禁用动画 ⏱️number | string0.3
class-name自定义类名,添加个性化样式 🎨string-
custom-style自定义样式,直接设置样式对象 ✨object-
lock-scroll是否锁定背景滚动,锁定时蒙层里的内容也将无法滚动 🔒booleantrue
lazy-render是否在显示时才渲染节点,优化性能 🚀booleantrue
teleport指定挂载的节点,等同于 Teleport 组件的 to 属性 🎯string | Element-

Events

事件名说明回调参数
click点击时触发,处理遮罩层点击事件 👆event: MouseEvent

Slots

名称说明
default默认插槽,用于在遮罩层上方嵌入内容 📦

类型定义

组件导出以下类型定义,让 TypeScript 开发更顺畅 📝

ts
importtype { OverlayProps } from'vant';

主题定制

样式变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件 🎨

名称默认值描述
--van-overlay-z-index1遮罩层级 📚
--van-overlay-backgroundrgba(0, 0, 0, 0.7)遮罩背景色 🎨

📚 相关文档

弹出类组件

反馈类组件

导航类组件

基於Vant構建的企業級移動端解決方案