text-align是css属性而非html标签属性,必须作用于块级容器(如p、div)才生效;标签在html5中已被废弃,因其语义混乱、不可控且兼容性差。

text-align 是控制文本区域对齐的核心,但它不是 HTML 标签的属性,而是 CSS 属性——所有“用 HTML 标签实现对齐”的说法,本质都是靠标签自带默认样式或内联 style 调用该 CSS 属性。
为什么 <center></center> 标签不能用了
老项目里可能还见得到 <center>文字</center>,但它在 HTML5 中已被废弃。现代浏览器虽大多仍渲染,但 W3C 明确不推荐,且会被 Lighthouse 等工具标记为可访问性问题。更关键的是:<center></center> 实际就是给内部内容加了 text-align: center 和 margin: 0 auto 的组合,但语义混乱、不可控、无法单独覆盖某一层级。
- 它对子元素中的
<div> 或浮动内容无效——这些已脱离文本流 <li>无法区分“文字居中”和“容器居中”,容易引发嵌套错位</li> <li>邮件客户端(如 Outlook)部分支持该标签,但行为不一致,反而增加调试成本</li> <h3> <code>text-align必须作用在块级容器上才生效常见错误是把
text-align: center写在<span></span>、<em></em>或行内图片上,结果毫无反应。它只对块级元素(如<p></p>、<div>、<code><header></header>)起作用,并影响其内部的行内内容排布。- 正确写法:
<p style="text-align: center">这段文字会居中</p> - 错误写法:
<span style="text-align: center">这不会居中</span> - 若父容器是
display: flex,text-align完全被忽略——此时得用justify-content: center -
<img>在<p></p>里也会被一起居中,因为它是替换元素,默认按行内方式参与文本流
中文两端对齐要额外加
text-justify: inter-character单纯
text-align: justify对中文效果差:浏览器默认按单词断行+拉伸空格,而中文无空格,结果就是最后一行缩进明显、字距不均。必须配合text-justify: inter-character才能启用“字间均匀拉伸”模式。- 必需同时设置
lang="zh"(或lang="zh-CN"),否则部分浏览器(如 Safari)不触发该行为 - 短段落(
- 旧版 Edge 和 iOS Safari 16 之前不支持
text-justify,可用@supports降级:@supports not (text-justify: inter-character) { p { text-align: left; } } - 不要用
letter-spacing模拟,超过0.06em就会让顿号、句号后出现可疑空白
右对齐数字时注意 Unicode 方向性
数值类内容(金额、日期、编号)用
text-align: right是合理选择,但若混入阿拉伯数字或带负号、千分位符(如−¥1,234.56),需确认父容器没意外继承direction: rtl——否则负号可能跑到最右边,小数点错位。- 检查是否被全局 CSS 或
影响 - 稳妥做法:显式重置方向
direction: ltr,尤其在表格单元格里 -
<td style="text-align: right; direction: ltr">¥123.45</td>比只写text-align更可靠 - 避免用
<div align="right"> ——这是过时的 HTML4 属性,邮件客户端虽支持,但语义缺失且无法被 CSS 覆盖 <p>真正难的不是写对那行 <code>text-align: center,而是判断它到底该加在哪一层:是加在<p></p>上让文字居中,还是加在<section></section>上让整块内容居中,又或者发现根本不是text-align的事,而是父容器用了flex或float把它架空了。调试时先看 computed styles,再查 display 类型,比反复改样式更快。
- 正确写法:











