element-ui 中messageBox弹框 自定义class样式不生效

754 阅读1分钟

今天在开发中遇到的问题在使用cancelButtonClass自定义类名时,class名称加上了,但是没有作用

image.png image.png 先分析下不生效的原因

1、this.msgboxmsgbox(alert等等),是通过element-ui的方法在body下渲染出来一个class="el-message-box__wrapper"的div。如果你看过源码就知道,这div根本就不是一个vue组件,只是使用js操作dom 生成的一些节点元素。所以不具备vue组件的一些特性:如在渲染templage模板时,不会在节点上添加data-v-xxxxxx 之类的属性,而scoped 正是运用data-v-xxxxxx属性找到对应的元素实现局部样式控制的。所以不生效是必然的。

2、/deep/不生效,deep 不过是css样式上加上了属性选择器[data-v-xxxxxx] 本质上还是从vue组件的角度来实现的样式注入,前面分析过了 message-box 本身就不是一个vue组件,所以也是不能生效的。

解决方法:

1、scoped不生效,那么只能将样式放全局,在当前组件加上一段不带scoped的style,或者放到全局样式表中。

image.png

image.png