HTMLHint配置不生效需检查三处硬性条件:文件名必须为.htmlhintrc(JSON)或.htmlhintrc.js(JS),必须置于项目根目录且未被.gitignore忽略,VS Code中需重启而非重载窗口并确认settings.json中启用"html.validate.attributes": true。
HTMLHint 不是装上就能用的“开箱即用”工具,配置文件缺失、路径错误或规则未启用,都会导致它完全静默。最常见的是 .htmlhintrc 文件名拼错(比如写成 .htmlhint.json 或漏掉 r),或者放在了项目根目录之外的位置。
.htmlhintrc(JSON 格式)或 .htmlhintrc.js(JS 导出格式),其他命名一律无效.gitignore 或构建工具忽略npx htmlhint src/index.html;若用 VS Code 插件,则需确认插件已启用且工作区已加载该配置<header> 就算合格很多同学把 <header> 当作“顶部 div”,在每个卡片、每个模块里都套一层,结果页面里出现十几个 <header>。这违反了语义——<header> 应仅用于整个页面或一个 <section>/<article> 的页眉区域,不是视觉容器。
<nav> 必须包裹真正用于导航的链接集合,不能只是几个按钮或图标<main> 在整个文档中只能出现一次,且不应嵌套在 <article> 或 <section> 内部<time datetime="2026-06-30">今天</time> 替代纯文本日期,机器可读性才真正生效写 <img src=logo.png alt=公司标识> 看似能跑通,但在 Vite/Webpack 等构建流程中,这类无引号写法会被解析器直接截断——logo.png alt=公司标识 被当作一个整体字符串,导致资源路径失效或属性丢失。W3C 规范也明确要求所有属性值必须用引号包裹。
class="user-card",而非单引号或不加引号required="required",而不是 required(后者在某些校验工具中会警告)./images/icon.svg,别混用反斜杠
@media 之前就崩了很多人调了半天 @media (max-width: 768px),发现手机上还是乱,最后发现根本原因是 HTML 结构本身就有嵌套错误——比如 <p> 里塞了 <div>,浏览器自动补全后 DOM 层级错乱,CSS 选择器压根没匹配到目标元素。
立即学习“前端免费学习笔记(深入)”;
npx htmlhint --config .htmlhintrc src/*.html,重点看 attr-no-duplication、attr-value-not-empty、id-unique 这类规则是否报错viewport meta 标签存在且正确:<meta name="viewport" content="width=device-width, initial-scale=1">
htmlhint,以及在 Elements 面板里多点两下“刷新后检查 DOM 实际结构”。