place-items: center; 是一个强大的 CSS 简写属性,用于同时控制 网格(Grid) 和 弹性盒(Flexbox) 布局中的对齐方式。它的作用相当于同时设置:
1 2 |
align-items: center; justify-items: center; |
在网格布局(Grid)中:
1 2 3 4 |
.container { display: grid; place-items: center; /* 所有网格项在单元格内居中 */ } |
效果:所有子元素在各自的网格单元格内水平和垂直居中
在弹性布局(Flexbox)中:
1 2 3 4 |
.container { display: flex; place-items: center; /* 需注意浏览器兼容性 */ } |
效果:所有子元素在主轴上居中(需配合 justify-content 获得最佳效果)
1 2 3 4 5 6 7 8 9 |
/* 完整写法 */ .container { align-items: center; /* 垂直居中 */ justify-items: center; /* 水平居中 */ } /* 简写 */ .container { place-items: center; } |
浏览器 | 支持版本 |
---|---|
Chrome | 59+ |
Firefox | 45+ |
Safari | 11+ |
Edge | 79+ |
iOS Safari | 11+ |
注意:在 Flexbox 布局中,部分旧浏览器可能需要添加 -webkit- 前缀
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<div class="container"> <div class="item">居中内容</div> </div> <style> .container { display: grid; /* 或 flex */ height: 300px; border: 2px dashed #ccc; place-items: center; /* 一行实现居中 */ } .item { width: 100px; height: 100px; background: coral; } </style> |
1 2 3 4 5 6 7 8 9 |
.container { display: grid; place-items: center; } @media (max-width: 768px) { .container { place-items: start center; /* 垂直靠顶,水平居中 */ } } |
1 2 3 4 5 6 |
.card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); place-items: center; /* 每个卡片内容居中 */ gap: 1rem; } |
总结:place-items: center; 是现代化布局的利器,能大幅简化元素居中代码,特别适合卡片布局、仪表盘、登录框等需要精确对齐的场景。