关于element抽屉el-drawer被遮罩层覆盖的解决方法

情景:在使用多个弹出抽屉时,当打开第一个抽屉,点击某个部分弹出新的抽屉,然后在关闭新的抽屉后,第一个抽屉会被遮罩层整个覆盖,无法点击也无法取消,只能整体刷新窗口才能正常

如图:

这是由于元素的一些层级设置不同导致的,所以蒙层被放在了最顶端。解决方法就是加上如下2行代码

      :append-to-body="true"
      :modal-append-to-body="false"

整体如下:

 其实我当时只是没加:modal-append-to-body="false"才出现如上情况,但是两个还是得搭配一起用,要不然也有可能在关闭时出现遮挡情况,官方文档也有说明:

加完后就解决问题了,如下:

 

### 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> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值