使用CSS Grid实现水平和垂直居中可通过以下三种方法,核心是利用place-items、justify-items与align-items或place-self属性,需确保容器启用display: grid并设置明确高度。
方法一:使用place-items(最简洁)适用于整个网格容器内所有子元素需同时居中的场景。place-items是justify-items(水平)和align-items(垂直)的简写属性,设置为center可一键实现双向居中。
.container { display: grid; place-items: center; height: 100vh; /* 必须设置容器高度 */}.item { /* 子元素自动居中,无需额外样式 */}<div class="container"> <div class="item">居中内容</div></div>方法二:分开设置justify-items和align-items若需分别控制水平或垂直方向的对齐方式(例如水平居中但垂直靠底),可拆分使用两个属性:
.container { display: grid; justify-items: center; /* 水平居中 */ align-items: center; /* 垂直居中 */ height: 100vh; /* 必须设置容器高度 */}方法三:使用place-self单独居中某个子项若仅需让特定子元素居中而不影响其他子项布局,可在目标子元素上使用place-self(简写属性)或单独设置justify-self和align-self。
.container { display: grid; height: 100vh; /* 必须设置容器高度 */}.item { place-self: center; /* 子元素单独居中 */}/* 或拆分写法 */.item-alt { justify-self: center; /* 水平居中 */ align-self: center; /* 垂直居中 */}关键注意事项- 容器高度:必须为网格容器设置明确高度(如100vh、固定像素值或通过Flexbox嵌套),否则居中效果无法生效。
- display: grid:确保容器已启用Grid布局。
- 响应式友好:Grid居中不依赖子元素尺寸,适合不同屏幕尺寸的适配。
- 属性关系:
place-items是justify-items + align-items的简写。
place-self是justify-self + align-self的简写。
完整代码示例<!DOCTYPE html><html><head> <style> /* 方法一:全局居中 */ .container-global { display: grid; place-items: center; height: 100vh; background: #f0f0f0; } /* 方法三:单独子项居中 */ .container-single { display: grid; height: 300px; background: #e0e0e0; } .item-single { place-self: center; } </style></head><body> <!-- 方法一示例 --> <div class="container-global"> <div class="item">全局居中内容</div> </div> <!-- 方法三示例 --> <div class="container-single"> <div class="item-single">单独居中内容</div> <div>不受影响的其他内容</div> </div></body></html>通过上述方法,可灵活实现CSS Grid的水平和垂直居中,根据需求选择最合适的方案即可。