Layui文本域禁用时文字颜色改不了,因layui-textarea禁用态由浏览器默认样式与layui内置CSS共同控制,需同时覆盖textarea[disabled]和.layui-disabled textarea两种场景,并用高权重选择器加!important及重置opacity。

layui文本域禁用时文字颜色为什么改不了
因为 layui-textarea 禁用态(disabled)的文字颜色由浏览器默认样式 + layui 内置 CSS 共同控制,直接写 textarea[disabled] { color: #999 } 很可能被覆盖——Layui 的 .layui-disabled 类会通过更高权重或内联方式强行设为 #c2c2c2,且未暴露配置入口。
正确覆盖 disabled 文本域文字颜色的写法
必须用带足够权重的选择器 + !important,且要同时处理两种禁用场景:
-
textarea[disabled]:原生 disabled 属性触发的禁用 -
.layui-disabled textarea:Layui 用 JS 动态加的layui-disabled类(常见于表单校验后禁用)
推荐 CSS 写法:
.layui-form-item textarea[disabled],
.layui-form-item .layui-disabled textarea {
color: #666 !important;
opacity: 1 !important; /* 防止某些版本叠加 opacity 导致发虚 */
}注意:opacity 也要重置,否则文字可能变淡;不要只写 textarea[disabled],漏掉 .layui-disabled 场景会导致部分禁用失效。
为什么在 form.render() 后颜色又变灰了
Layui 在 form.render() 或表单校验触发时,会重新给禁用元素加 layui-disabled 类,并可能注入内联样式。常见错误包括:
- 只写了
textarea[disabled],没覆盖.layui-disabled textarea - CSS 放在
<style>标签里但位置靠前,被后加载的 layui.css 覆盖 - 用了 scoped CSS(如 Vue 单文件组件),没做穿透(需
:deep(.layui-disabled textarea))
验证方法:打开开发者工具,选中禁用的 textarea,看 computed styles 中 color 最终被哪条规则决定——如果显示 color: #c2c2c2 来自 layui.css,说明你的规则没生效。
不想全局改?那就用 class 精准控制
如果只希望某几个文本域禁用时变色,别动全局样式。给目标 textarea 加自定义 class,比如 my-disabled-color,然后写:
.my-disabled-color[disabled],
.layui-form-item .layui-disabled .my-disabled-color {
color: #8b5cf6 !important;
}这样既不影响其他文本域,也避开和 layui 主题色冲突的风险。真正容易被忽略的是:Layui 的禁用逻辑不只靠 disabled 属性,它还会动态加类,所以两种选择器缺一不可。


















