element-ui drawer 关闭遮罩层
时间: 2023-07-05 13:28:15 浏览: 736
要关闭 Element UI 的 Drawer 组件的遮罩层,可以在 Drawer 组件上添加 `:modal="false"` 属性,即可去掉遮罩层。例如:
```html
<el-drawer title="Drawer" :visible="visible" :modal="false">
<!-- Drawer 内容 -->
</el-drawer>
```
这样设置后,Drawer 组件就不会有遮罩层了。
相关问题
el-drawer遮罩层
### element UI `el-drawer` 组件遮罩层自定义样式与操作
#### 修改默认行为防止点击遮罩关闭弹窗
为了阻止用户通过点击遮罩层来关闭 `el-drawer` 或者 `el-dialog`,可以在组件属性中设置 `close-on-click-modal=false`。这会禁用点击模态背景时自动关闭的行为[^1]。
```html
<el-drawer
title="我是标题"
:visible.sync="drawerVisible"
direction="rtl"
:before-close="handleClose"
close-on-click-modal="false">
</el-drawer>
```
#### 解决遮罩层覆盖问题
对于 `el-drawer` 被遮罩层覆盖显示异常的情况,可以通过调整组件的附加位置参数来修正这个问题。具体来说,在 `<el-drawer>` 标签内加入两个布尔型属性:
- `:append-to-body="true"`:使抽屉容器追加到body元素上;
- `:modal-append-to-body="false"`:让遮罩层不附着于body而是作为抽屉的一部分;
这样做可以有效避免因层级关系造成的视觉错误[^3]。
```html
<el-drawer
title="我是标题"
:visible.sync="showDrawer"
direction="ltr"
:append-to-body="true"
:modal-append-to-body="false">
<span>我来啦!</span>
</el-drawer>
```
#### 自定义遮罩层样式
如果想要进一步定制遮罩层的表现形式,则可通过CSS类选择器的方式修改其外观特性。Element Plus 提供了一个名为 `.el-overlay` 的全局类用于控制所有类型的遮罩效果。因此可以直接针对该类编写特定的选择器来自定义颜色、透明度等属性[^4]。
```css
/* 定义遮罩层的颜色和透明度 */
.el-overlay {
background-color: rgba(0, 0, 0, .5);
}
```
另外还可以利用 scoped CSS 来限定样式的范围仅作用于当前组件内部,从而不影响其他地方使用的相同组件实例。
```vue
<style scoped>
.my-custom-drawer >>> .el-overlay { /* 使用深嵌套符兼容某些预处理器 */
background-color: rgba(255, 0, 0, .7); /* 更改遮罩层为半透明红色 */
}
</style>
<!-- HTML -->
<div class="my-custom-drawer">
<!-- 抽屉内容 -->
</div>
```
el-drawer去除遮罩仍能关闭
### 解决方案
为了禁用 `el-drawer` 组件点击遮罩关闭的功能,可以通过设置属性 `wrapperClosable` 或者 `:wrapper-closable` 为 `false` 来实现这一需求[^4]。以下是具体的代码示例:
```vue
<template>
<div>
<!-- 设置 :wrapper-closable="false" 禁用点击遮罩关闭 -->
<el-drawer
title="我是标题"
:visible.sync="drawerVisible"
:wrapper-closable="false"
size="30%">
<span>我来啦!</span>
</el-drawer>
<!-- 打开抽屉的按钮 -->
<button @click="openDrawer">打开抽屉</button>
</div>
</template>
<script>
export default {
data() {
return {
drawerVisible: false, // 控制抽屉显示状态
};
},
methods: {
openDrawer() {
this.drawerVisible = true;
}
}
};
</script>
```
上述代码通过将 `:wrapper-closable` 属性设为 `false`,成功实现了禁用点击遮罩关闭功能的效果。
另外,在某些场景下可能需要全局配置此行为,则可以在项目初始化阶段对默认值进行修改。例如对于 `Dialog` 和 `Drawer` 的全局设置如下所示[^1]:
```javascript
import Vue from 'vue';
import ElementUI from 'element-ui';
Vue.use(ElementUI);
// 全局设置 Dialog 不允许点击遮罩关闭
ElementUI.Dialog.props.closeOnClickModal.default = false;
// 全局设置 Drawer 阻止点击遮罩层关闭
ElementUI.Drawer.props.wrapperClosable.default = false;
```
以上方法适用于希望在整个应用范围内统一控制的行为模式。
#### 注意事项
需要注意的是,当设置了 `close-on-click-modal=false` 后,如果仍需支持手动关闭操作(如右上角的“X”按钮),则应保留该按钮并确保其正常工作[^3]。
---
###
阅读全文
相关推荐

















