Skip to content

Overlay 遮罩层

创建一个遮罩层,用于强调特定的页面元素,并阻止用户对遮罩下层的内容进行操作,一般用于弹窗场景,wu-ui 所有相关弹窗组件都是使用的该组件。

平台兼容性

App(vue)App(nvue)H5小程序VUE2VUE3

基本使用

  • 通过 show 参数配置是否显示遮罩
  • 遮罩被点击时,会发送一个 click 事件,如不需要此事件,请设置 mask-click-able 参数为 false
vue
<template>
	<wu-overlay :show="show" @click="show = false"></wu-overlay>
</template>

<script>
	export default {
		data() {
			return {
				show: true
			}
		}
	}
</script>
<template>
	<wu-overlay :show="show" @click="show = false"></wu-overlay>
</template>

<script>
	export default {
		data() {
			return {
				show: true
			}
		}
	}
</script>

嵌入内容

通过默认插槽可以在遮罩层上嵌入任意内容

注意:如果不想让 slot 插槽内容的点击事件冒泡到遮罩,请给指定元素添加上 @tap.stop

vue
<template>
	<wu-overlay :show="show" @click="show = false">
		<view class="warp">
			<view class="rect" @tap.stop></view>
		</view>
	</wu-overlay>
</template>

<script>
	export default {
		data() {
			return {
				show: true
			}
		}
	}
</script>

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

	.rect {
		width: 120px;
		height: 120px;
		background-color: #fff;
	}
</style>
<template>
	<wu-overlay :show="show" @click="show = false">
		<view class="warp">
			<view class="rect" @tap.stop></view>
		</view>
	</wu-overlay>
</template>

<script>
	export default {
		data() {
			return {
				show: true
			}
		}
	}
</script>

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

	.rect {
		width: 120px;
		height: 120px;
		background-color: #fff;
	}
</style>

遮罩样式

  • 通过 duration 设置遮罩淡入淡出的时长,单位 ms
vue
<wu-overlay :show="show" :duration="400" :z-index ="999" :opacity="0.3"></wu-overlay>
<wu-overlay :show="show" :duration="400" :z-index ="999" :opacity="0.3"></wu-overlay>

API

属性名说明类型默认值可选值
show是否显示遮罩Booleanfalsetrue / false
zIndex弹出层的z-index值NumberString10075
duration动画时长,单位msString / Number300-
opacity不透明度值,当做rgba的第四个参数String / Number0.5-
事件名说明回调参数
click点击遮罩发送此事件-
插槽名说明
default默认插槽,用于在遮罩层上方嵌入内容