stylelint 明确不支持检查 html 内联样式(style="..."),因其仅处理 css 源码字符串,不解析 html 结构或提取属性值;替代方案包括 html-validate 的 css-inline 规则或重构为工具链友好的 utility class。

Stylelint 不能、也不应被用于检查 HTML 内联样式(style="..."),这不是配置问题,而是设计边界——它明确放弃支持,且没有可靠方案绕过。
为什么 style="color: red" 永远不会被 Stylelint 报错
Stylelint 的输入是 CSS 源码字符串,不是 HTML AST。它不解析标签结构,也不从属性值中提取 CSS 声明。即使你写了 style="text-align: centerrr",Stylelint 根本看不到这串字符串,更不会校验拼写或语法。
- 内联样式属于 HTML 属性值,而 Stylelint 只处理独立的 CSS 文件(
.css)、预处理器文件(.scss)或单文件组件中的<style></style>块(需 processor) -
stylelint-processor-html只提取标准<style></style>标签内容,对style属性完全无视 -
stylelint-config-html名字有误导性:它检查的是 HTML 属性是否合法(如type="text/css"是否存在),不是检查内联 CSS 的格式或语义
试图“强制”检查 style 属性的常见失败路径
有人尝试用 customSyntax: "postcss-html" 或组合 stylelint-config-html,结果仍无报错,原因很直接:
-
postcss-html解析器只负责把 HTML 中的<style></style>块喂给 Stylelint,不碰style属性值 - 即便你手动写正则去匹配
style="[^"]*"并传入 Stylelint,也会因缺失完整 CSS 上下文(无选择器、无作用域)导致规则失效,比如selector-max-id、no-duplicate-selectors全部失去意义 - JS 插值(
style="margin: {{ x }}px")、转义(style="content: "foo"")、模板语法(style="color: {{ theme.color }}")会让任何通用 parser 失效
真正能查内联样式的替代方案
如果你项目里确实存在大量 style 属性,且必须审查其 CSS 部分,应切换工具链:
-
html-validate支持css-inline规则,可捕获明显无效值(如text-align: top),但不校验缩进、空格、顺序等格式类问题 -
stylelint+ 自定义规则(极少见):需用正则提取style属性值,再调用postcss.parse解析,但会漏掉 JS 插值、不支持!important和单位省略等真实场景,维护成本极高 - 重构优先:把
style="display: flex; gap: 8px"替换为 utility class(如class="d-flex gap-2"),让样式逻辑回归 CSS 文件——这才是 Stylelint 能稳定工作的前提
内联样式本身是高特异性、难测试、不可复用的反模式。工具不支持,恰恰是在提醒:该删了,而不是想办法绕过去。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











