Vue.js结合Element-UI时嵌套CSS选择器样式不生效如何解决
问题根因
- 编写的CSS存在基础语法错误:所有样式块的闭合符都误写为左大括号
{,浏览器无法解析非法规则,代码直接失效。 - Element UI的
<el-input>为封装组件,若当前组件的<style>标签带scoped属性,普通后代选择器无法穿透组件的样式隔离边界,选不到组件内部渲染的原生文本域节点。 - el-input组件本身给内部输入框预置了默认文字样式,直接通过
textarea标签选择的写法权重不足,且容易匹配到无关元素。组件实际渲染的可输入文本域自带类名el-textarea__inner,这才是控制文字颜色的目标节点。
修复方案
- 先修正CSS语法错误,所有样式块结尾统一使用右大括号
}闭合。 - 根据样式类型选择对应写法:
- 若使用带
scoped标识的局部样式,通过深度选择器穿透组件边界:
::v-deep .disabledText .el-textarea__inner { color: red !important; }- 若使用无
scoped标识的全局样式,直接编写高权重选择器匹配目标节点即可:
ul.other li.disabledText .el-textarea__inner { color: red !important; } - 若使用带
补充:此前给el-input绑定自定义类不生效,是因为自定义类默认会被绑定到el-input的外层根节点,而非内部的真实输入框节点,不做样式穿透的情况下,scoped样式无法作用到组件内部元素。
内容的提问来源于stack exchange,提问作者User00000034
相关产品推荐
相关产品推荐

