贝利信息

CSS 中 ID 选择器以数字开头时需转义,否则样式不生效

日期:2026-01-16 00:00 / 作者:心靈之曲

当使用纯数字作为 html 元素的 `id`(如 `id="7"`)并在 css 中直接写 `#7` 时,该选择器会被浏览器解析为无效语法,导致样式(如 `flex-shrink`)无法应用;正确写法是使用 css 转义序列 `#\37`,或更推荐地改用语义化类名。

在 CSS 规范中,ID 选择器以数字开头是语法非法的。虽然 HTML 允许 id="7" 这样的属性值(HTML5 对 id 的命名限制已放宽),但 CSS 选择器语法要求:以数字开头的标识符必须通过反斜杠转义(escape sequence)才能被正确识别。

例如:

✅ 更佳实践:避免数字开头的 ID,改用语义化类名

  1
  2
  
  7
.item-7 {
  flex-shrink: 4;
}

⚠️ 注意事项:

总结:不是 flex-shrink 失效,而是 #7 本身未被 CSS 引擎识别——这是 CSS 选择器语法层面的限制,而非 Flexbox 行为异常。养成用 class 替代数字 ID 的习惯,既规避转义复杂度,又符合现代 CSS 工程最佳实践。