块级元素用 margin: auto 居中需满足两个条件:是块级元素且设置明确宽度;Flex 居中须父容器设 display: flex;absolute 居中需配合 transform: translate(-50%,-50%);还需重置 body 默认 margin 并添加 viewport meta 以适配移动端。

用 margin: auto 居中块级元素是基础,但前提得“能居中”
HTML 元素默认不响应 实操建议: 现代项目基本都用 Flex,但它不起作用,90% 是因为只在子元素上写了 常见错误现象: 立即学习“前端免费学习笔记(深入)”; 实操建议: 适合需要脱离文档流、或配合遮罩层使用的场景(比如模态登录框)。但直接写 网页中拖动 DIV 是很常见的操作,今天就分享给大家一个 jQuery 多列网格拖动布局插件,和其它的插件不太一样的地方在于你处理拖放的元素支持不同大小,并且支持多列的网格布局,它们会自动的根据位置自己排序和调整。非常适合你开发具有创意的应用。这个插件可以帮助你将任何的 HTML 元素转换为网格组件 性能影响小,但兼容性没问题;唯一容易踩的坑是忘记用 实操建议: 很多页面在桌面看着居中,手机一打开就贴左——大概率是没重置 使用场景:响应式登录页必须考虑小屏。光靠居中技巧不够,得让整个布局有弹性。 实操建议:margin: auto 水平居中,除非它满足两个条件:是块级元素,且设置了明确的宽度。登录表单常见写法是 或 margin: 0 auto; 却没加 width,结果毫无反应。
width: 400px; 或 max-width: 90vw;
margin: 0 auto; —— 注意是 0 auto,不是 auto(否则上下边距也会撑开)text-align: center 干扰,那只会居中文本,不是块本身Flex 布局最稳,但别忘了给父容器设
display: flex
justify-content: center,却忘了父容器必须先变成 Flex 容器。justify-content: center 写在 .login-box 上,但它的父级(比如 或 )没加 display: flex,等于白写。 或一个全宽 display: flex
justify-content: center 和 align-items: center 实现完全居中(垂直+水平)height: 100vh; 确保可用高度充足用
position: absolute 居中要手动抵消偏移left: 50%; top: 50% 只会让左上角到中心,不是整体居中。
transform: translate(-50%, -50%) 回拉自身宽高的一半。
position: absolute;
left: 50%; top: 50%;
transform: translate(-50%, -50%); —— 缺一不可position: relative 或 position: fixed,否则会相对于 viewport 定位,可能跑偏别忽略
默认样式和移动端适配 的默认 margin,或者没加 viewport meta。
body:写 body { margin: 0; },避免浏览器默认外边距干扰居中计算max-width + width: 100% 组合,比纯固定宽度更适应小屏align-items: center 在 上的支持不稳定,可套一层










