vue3使用ElementPlus的消息el-message样式不生效或者被遮盖(z-index)

文章讲述了在Vue3+TypeScript环境下,遇到el-message组件自定义样式不生效和被遮罩层挡住的问题。解决方案包括通过JavaScript动态设置样式,特别是调整margin-top和z-index属性,以及检查并调整父元素的z-index,以确保message组件的正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题1:el-message自定义样式不生效

想改弹出框的位置时不生效,使用了el-message的自定义类的custom-class属性也不行。原因应该是加了scoped后使用到里面样式的dom会添加data-v-xxxx这种属性防止css污染,但是message生成的dom是没有添加data-v-xxx属性的,所以样式无效。

解决方式:js动态设置(就是麻烦一点)
 this.$message({
          message:'登录失败',
          center:true,
          type:'error',
          duration:0
        });
        var el=document.querySelector('.el-message');
        if(el) el.style.cssText = 'margin-top: 60px;'

我用的vue3+TypeScript

ElMessage({
            showClose: true,
            message: '登录成功',
            type: 'success'
          })
          var el: any = document.querySelector('.el-message')
          if (el) el.style.cssText = 'margin-top: 60px;'
问题2:el-message被遮罩层挡住

在有半透明遮罩层的情况下触发message时其层级(z-index)在遮罩层之下

解决办法:在上面代码的基础上加z-index
ElMessage({
            showClose: true,
            message: '登录成功',
            type: 'success'
          })
          var el: any = document.querySelector('.el-message')
          if (el) {
            el.style.cssText = 'margin-top: 60px;'
            el.style.zIndex = 10000
          }

如果还是被遮罩层挡住很可能是父元素层级的问题,需要给父级加个z-index属性调整父元素层级,比如:

<div style="z-index: 1">
  <div style="z-index: 10">son</div>
</div>
<div style="z-index: 2"></div>

我的是A(父)组件包含了B(子)组件,给A的样式加了z-index小的值就可以了

### ElMessage 函数使用方法 ElMessageElement Plus 库中的一个重要组件,专门用于展示全局消息提示。此功能允许开发者通过传递不同类型的参数来定制化消息框的内容、样式以及行为。 #### 基本用法 最简单的调用方式只需提供字符串形式的信息即可显示一条普通的通知[^2]: ```javascript import { ElMessage } from &#39;element-plus&#39;; // 显示一个简单文本消息 ElMessage(&#39;这是一条消息提示&#39;); ``` 为了更灵活地控制通知的表现形式和支持更多交互需求,可以通过向 `ElMessage` 传递配置项对象来进行高级设置[^1]。例如指定消息类型(如成功、警告或错误),并调整持续时间等属性: ```javascript // 定制化的消息提示 ElMessage({ message: &#39;恭喜你,这是一条成功消息&#39;, type: &#39;success&#39;, // 设置消息类型为 success 表示成功的反馈 duration: 3000 // 自动关闭前等待的时间,默认单位毫秒 }); ``` 对于特定场景下的应用,还可以利用预设的方法快速创建相应风格的消息提醒: ```javascript // 成功信息 ElMessage.success(&#39;操作完成&#39;); // 警告信息 ElMessage.warning(&#39;请注意检查输入的数据&#39;); // 错误信息 ElMessage.error(&#39;发生了一些问题,请稍后再试&#39;); ``` 除了上述提到的基础特性外,在实际项目开发过程中可能还会遇到更加复杂的需求,比如希望在某些情况下能够监听到消息被关闭事件以便执行额外的操作。这时就可以借助回调函数机制实现这样的功能扩展[^4]: ```javascript const msgInstance = ElMessage({ message: &#39;这条消息将在三秒钟后消失...&#39;, onClose() { console.log(&#39;该消息已被用户主动关闭或是超时自动隐藏&#39;); } }); setTimeout(() => { msgInstance.close(); // 手动触发关闭动作 }, 3000); ``` 以上就是关于如何运用 ElMessage 来构建美观实用的消息提示系统的介绍。无论是基础版还是增强型的应用案例都能满足日常Web应用程序中常见的即时反馈需求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值