text-align: center必须作用于父容器且其宽度需显式设为100%或left/right为0,否则因容器脱离文档流或宽度塌缩而失效;flex布局需同时满足height和justify-content/align-items条件。

直接给父容器加 text-align: center 就行,但必须确保它“撑满宽度”——这是最容易翻车的地方。
为什么 text-align: center 有时没反应?
常见错误是把超链接(a)直接放在 position: fixed 或 position: absolute 的容器里,却忘了设宽度。比如:
.footer {
position: fixed;
bottom: 0;
text-align: center; /* 这行无效!因为 .footer 默认只包裹内容 */
}
此时 .footer 的宽度是“内容宽度”,text-align 没有可居中的空间。
- 必须显式设置
width: 100%或left: 0; right: 0 - 如果用了
display: flex,text-align就完全不起作用,别混用 - 不要依赖父级
<main></main>或的text-align,fixed 元素已脱离文档流
最稳的写法:position: fixed + width: 100% + text-align: center
适用于所有浏览器,包括 IE11:
.bottom-link {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
text-align: center;
padding: 12px 0;
background: #fff;
}
.bottom-link a {
display: inline-block;
margin: 0 8px;
}
-
left: 0和width: 100%缺一不可,否则在 Safari 或某些移动端视口下会偏移 -
a设为inline-block是为了方便加左右 margin,避免文字挤在一起 - 不用
flex就能避免老版本 Android WebView 的兼容问题
想用 Flex 布局?注意两个硬性前提
Flex 居中更语义化,但必须满足:
- 父容器要有明确高度(哪怕只是
height: 40px),否则align-items: center可能失效 - 不能同时用
text-align: center,它和justify-content冲突,优先级不一致 - 如果父容器是
position: fixed,仍需left: 0; width: 100%,否则 flex 容器本身不占满
正确示例:
.bottom-flex {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
background: #f5f5f5;
}
真正容易被忽略的是:无论用哪种方式,只要容器用了 position: fixed 或 absolute,它就不再受页面正常流约束——text-align 是否生效,只取决于它自己的宽度是否足够;而这个宽度,从来不会自动继承自视口,必须手动给。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











