记一个Element-plus的ElMessageBox样式被遮挡问题

简介: 使用Element-plus开发时,发现ElMessageBox被El-Table遮挡

昨天在开发一个管理页面,功能有,编辑时只有一行可以编辑,删除时弹出警告窗口,确认后才执行删除。

代码为Element-plus中的示例。

但是ElmessageBox一直被<El-Table>遮挡,image.png猜测的可能原因为嵌套了两层<router-view>导致的<El-Table>的z-index太高,

<template><el-table:data="projectTableData"style="width: 100%"><el-table-columnprop="date"label="Date"><template#default="scope"><spanv-show="!scope.row.editing">{{ scope.row.date }}</span><el-inputv-show="scope.row.editing"v-model="scope.row.date"></el-input></template></el-table-column><el-table-columnprop="name"label="name"></el-table-column><el-table-columnprop="address"label="Address"/><el-table-columnlabel="Operate"><template#default="{ row, rowIndex }"><el-buttonv-if="row.editing"type="primary"link@click="handleSave(row)">保存</el-button><el-buttonv-elsetype="primary"link@click="handleEdit(row, rowIndex)">编辑</el-button><el-buttonv-if="row.editing"link@click="handleCancel(row)">取消</el-button><el-buttonv-elsetype="danger"link@click="handleDelete(row)">删除</el-button></template></el-table-column></el-table></template><scriptsetuplang="ts">import {
ElMessage,
ElMessageBox,
} from'element-plus';
import { ref } from'vue';
constprojectTableData=ref([
    {
date: '2016-05-03',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
editing: false, 
    },
    {
date: '2016-05-02',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
editing: false,
    },
    {
date: '2016-05-04',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
editing: false,
    },
    {
date: '2016-05-01',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
editing: false,
    },
]);
consthandleEdit= (row, rowIndex) => {
if (!row.editing) {
// 如果点击的行不是当前正在编辑的行projectTableData.value.forEach((item, index) => {
if (index!==rowIndex) {
item.editing=false; // 取消其他行的编辑状态            }
        });
row.editing=true;
    }
};
consthandleSave= (row) => {
row.editing=false;
// Handle Save logic};
consthandleDelete= (row) => {
console.log(row);
ElMessageBox.confirm(
'真的删除吗?删除之后数据无法找回',
        {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
appendTo:'body',
title:"警告",
        })
        .then(() => {
ElMessage({
type: 'success',
message: '删除成功'            })
        })
        .catch(() => {
ElMessage({
type: 'info',
message: 'Delete canceled',
            })
        })
// Handle Delete logic};
consthandleCancel= (row) => {
row.editing=false;
};
</script>

image.png

在开发者控制台元素中可以看到已经挂载到body了,最外层的div的z-index是2002,所以设置这个z-index更高就行了

.is-message-box{
position: relative;
z-index: 9000;
}

image.png

相关文章
|
JavaScript vr&ar
vue3通过ref获取dom元素并修改样式
vue3通过ref获取dom元素并修改样式
1075 0
|
前端开发 JavaScript 安全
【前端相关】elementui使用el-upload组件实现自定义上传
【前端相关】elementui使用el-upload组件实现自定义上传
2424 0
nuxt3:vue-dompurify-html
nuxt3:vue-dompurify-html
639 0
element UI【解决方案】消息弹框被对话框遮挡($message消息框被dialog或$alert遮罩)
element UI【解决方案】消息弹框被对话框遮挡($message消息框被dialog或$alert遮罩)
649 3
|
9月前
|
存储 设计模式 JavaScript
Vue 组件化开发:构建高质量应用的核心
本文深入探讨了 Vue.js 组件化开发的核心概念与最佳实践。
505 1
ElementPlus 之 el-select 多选实现全选功能
本文介绍了在ElementPlus框架中,如何通过自定义事件处理和条件判断实现`el-select`多选控件的全选功能。
1895 1
ElementPlus 之 el-select 多选实现全选功能
|
JavaScript
成功解决:el-dialog弹出窗口、数据第一次没有加载、第二次打开才能加载数据。(每次页面刷新后、第一次打开dialog窗口、图片数不加载)
这篇文章分享了解决Vue中`el-dialog`弹出窗口在第一次打开时数据未加载问题的技巧,通过改变组件的`key`属性来强制Vue重新渲染DOM,从而确保数据正确加载。
成功解决:el-dialog弹出窗口、数据第一次没有加载、第二次打开才能加载数据。(每次页面刷新后、第一次打开dialog窗口、图片数不加载)
|
JavaScript 测试技术 API
如何从 Vue 2 无痛升级到 Vue 3,一文搞定!
如何从 Vue 2 无痛升级到 Vue 3,一文搞定!
|
前端开发 JavaScript
vite中css最佳实践:使用postcss完善项目中的css配置
【8月更文挑战第3天】使用postcss完善项目中的css配置
2992 1
|
前端开发 UED
登录页也酷炫:CSS动画效果,打造非凡第一印象!
登录页也酷炫:CSS动画效果,打造非凡第一印象!