align 属性在 标签上已彻底失效,html5 不再支持,现代浏览器(chrome 120+、firefox 128、safari 17+)直接忽略该属性,仅 quirks mode 下可能偶然生效;必须用 text-align css 替代,且需作用于块级容器才有效。

直接说结论:align 属性在 <p></p> 标签上已彻底失效,HTML5 不再支持,浏览器即使渲染出来也只是兼容性残留,不能用于新项目。
为什么 align 属性现在不能用
HTML 4.01 就已标记为“不赞成使用”,XHTML 1.0 Strict 完全移除,HTML5 标准里直接删除该属性定义。现代浏览器(Chrome 120+、Firefox 128、Safari 17+)对 <p align="center"></p> 这类写法会忽略,或仅在 quirks mode 下偶然生效——这不是功能,是历史包袱。
常见错误现象:<p align="right">作者信息</p> 在本地预览看着对齐了,一放到生产环境或换浏览器就变左对齐;或者用 Lighthouse 扫描直接报“使用了废弃的 HTML 属性”。
- 它不参与 CSS cascade,无法被
!important覆盖 - 无法通过 JavaScript 的
element.align动态读写(返回空字符串或undefined) - 与 Flex/Grid 布局冲突,容易引发不可预测的嵌套对齐行为
text-align 是唯一可靠替代方案
所有主流浏览器都完整支持 text-align,且语义清晰、可继承、可动画、可响应式控制。
基础写法就是替换掉 align 属性:
<p style="text-align: center">居中段落</p> <p class="right-aligned">右对齐段落</p>
CSS 类写法更推荐(便于复用和维护):
.text-right { text-align: right; }
.text-center { text-align: center; }
.text-justify { text-align: justify; }
-
text-align: justify对中文默认效果差,必须加text-justify: inter-character(仅 Chromium 系列支持) - 末行想也两端对齐?补上
text-align-last: justify,Safari 16.4+ 才开始支持 - 不要对 inline 元素(如
<span></span>)设text-align——它只对块级容器内的内联内容起作用
遇到 text-align: justify 不生效怎么办
不是代码写错了,是条件没满足。这个值要起效,必须同时成立:
-
<p></p>是块级元素(默认就是) - 容器有明确宽度(比如设置了
width、max-width,或父容器是定宽 flex item) - 文本足够长、能自然换行(单行文本永远 fallback 到 left)
典型失效场景:<p style="text-align: justify">你好</p> —— 就两个字,根本没换行点,浏览器无从“拉伸”。加个 width: 200px 再试,或者塞进一段长文字,立刻可见效果。
中文排版还多一层限制:浏览器默认只在空格/标点处断词,汉字之间不插空隙。所以即使满足上述三点,看起来仍像左对齐。此时必须叠加:
p.justify-chinese {
text-align: justify;
text-justify: inter-character;
text-align-last: justify;
}
注意:text-justify: inter-character Firefox 当前完全忽略,Safari 不支持,只能当作增强项,不能当作必需依赖。
真正容易被忽略的点是:对齐方式属于**容器样式**,不是内容样式。别试图在 <span></span> 或 <em></em> 上设 text-align 去控制某几个字的位置——得设在它的父块级容器上,比如 <p></p> 或 <div>。</div>










