html标签名、属性名必须全小写,属性值必须用双引号包裹,这是html5规范强制要求,也是ssr、jsx、xml解析及ci/cd工具链正常运行的前提。

HTML 大小写规范统一的核心就一条:所有标签名、属性名必须小写,属性值必须用双引号包裹。这不是风格偏好,而是 HTML5 规范强制要求,更是现代前端工具链(SSR、JSX、CI/CD)正常运转的前提。
标签和属性名必须全小写
哪怕浏览器能解析 <div> 或 <code><input type="text">,也不代表它合规。在 Next.js、React JSX、TypeScript 类型检查、XML 解析器或静态站点生成器中,大写标签会直接报错,比如:
-
<script></script>在 SSR 环境下可能被跳过执行 -
<img src="a.jpg">在 Prettier 自动格式化后变成<img src="a.jpg">,引发无意义的 diff -
<button></button>(首字母大写)在 JSX 中被识别为自定义组件,而非原生<button></button>,导致 ref、事件绑定失效
属性值必须加双引号
不加引号看似能跑,但隐患明显:
-
class=header active会被解析成两个属性:class="header"和孤立的active(被忽略) -
title=John's page中的单引号会中断解析,导致属性截断 - W3C 验证器明确报错:Attribute value must be quoted
- XML 工具(如 RSS 解析、SVG 打包脚本)会直接丢弃无引号属性
布尔属性如 disabled 可省略值,但显式写成 disabled="disabled" 更稳妥,尤其面对旧 IE 或服务端 XML 解析器。
用工具自动保障,别靠人记
手动统一效率低、易出错。真正可持续的方式是接入自动化工具链:
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- VS Code 安装
html-validate插件,实时标红<div> 或未引号属性 <li>Prettier 配置 <code>htmlWhitespaceSensitivity: "css",保存即转小写、补引号、重排属性顺序 - Git 提交前通过
husky + lint-staged运行html-validate --config .htmlvalidate.json,不合规代码进不了主干 - CI 流水线强制校验,失败即阻断发布
注意模板类文件的例外处理
像 .vue、.ejs、.njk 这类混合模板,HTMLHint 默认会误报。需在 .htmlhintrc 中配置:
"ignore": ["**/*.vue", "**/*.ejs"]
同时确认 .htmlhintrc 放在项目根目录——HTMLHint 只向上查找一级父目录,放错位置等于没配。










