align="center" 在 Strict DOCTYPE 下不被识别而报错,因其是 HTML 4.01 Transitional 的废弃表现属性;它本意是控制图片与邻近文本的对齐,并非使图片在父容器中水平居中;可靠方案为 CSS:display: block + margin: 0 auto、vertical-align: middle 或父容器 text-align: center / flex + justify-content: center。

align="center" 在 Strict DOCTYPE 下根本不会生效
因为 align 是 HTML 4.01 Transitional 里遗留的纯表现属性,在 Strict DTD 中已被明确废弃。浏览器即使渲染,也只当它不存在——不是“失效”,是“不被识别”。W3C 验证器会直接报错 attribute "align" not allowed on element "img"。
为什么不能靠 align="center" 居中图片
这个属性本意是控制图片相对于周围文本的对齐(如 align="top"、align="absmiddle"),不是让图片在父容器里水平居中。它作用对象是行内流布局中的邻近文字,和 text-align: center 完全不是一回事。
-
align="center"在任何 DOCTYPE 下都不具备“使 img 在其父块中居中”的能力 - 即便在 Transitional 中看似有效,实际是浏览器的容错渲染,行为不一致(比如在 Firefox 中可能完全没反应)
- 现代 CSS 布局(Flexbox/Grid)彻底无视该属性
真正可靠的居中方案(三选一)
用 CSS 替代,按场景选:
- 单图居中(块级):
img { display: block; margin: 0 auto; } - 图文混排中让图片相对文字垂直居中:
img { vertical-align: middle; }(配合行高或 inline-block 父容器) - 父容器整体居中(推荐):
div { text-align: center; }或div { display: flex; justify-content: center; }
Strict 模式下还容易踩的坑
除了 align,以下属性同样被 Strict DTD 禁用,但开发者常误用:
-
border、hspace、vspace—— 全部得用style或 CSS 类替代 -
target="_blank"在 Strict XHTML 里也不合法,需用 JavaScript 或 HTML5 DOCTYPE - 所有 presentational 属性(如
bgcolor、width数值属性)都必须移入 CSS
Strict 不是“更严格地执行旧规则”,而是强制你切换到语义 + 样式分离的模型。哪怕只改一个 align,背后牵动的是整个样式管理逻辑。

















