错位网格布局通过让网格项目不在默认位置排列,形成错落有致的视觉效果,在图片墙、卡片列表等场景中应用广泛。实现这种布局的核心是利用CSS Grid的grid-column-start属性控制项目的列起始位置,打破默认的排列规则。

grid-column-start属性基础
grid-column-start是CSS Grid布局中用于指定网格项目在列方向上的起始网格线的属性,默认情况下网格项目会按照顺序占据相邻的网格线之间的区域,当我们手动修改这个起始线的值,就能让项目偏移到其他列位置。
该属性可以接收以下几种类型的值:
- 数字:表示第几条列网格线,从1开始计数
- 关键词span:配合数字表示跨越的列数
- 关键词auto:使用默认的自动放置规则
基础错位网格实现步骤
1. 创建基础网格容器
首先定义网格容器,设置列轨道的数量和宽度,这里创建一个3列的网格容器作为基础。
/* 网格容器样式 */
.grid-container {
display: grid;
/* 定义3列,每列宽度1fr */
grid-template-columns: repeat(3, 1fr);
/* 行间距和列间距 */
gap: 20px;
padding: 20px;
background-color: #f5f5f5;
}
/* 网格项目通用样式 */
.grid-item {
height: 150px;
background-color: #4a90e2;
color: white;
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
border-radius: 8px;
}
2. 使用grid-column-start设置偏移
给需要错位的部分网格项目单独设置grid-column-start属性,让它的起始列线大于默认的排列位置,实现向右偏移的效果。
/* 让第2个网格项目从第2条列线开始,默认是第1条 */
.grid-item:nth-child(2) {
grid-column-start: 2;
}
/* 让第4个网格项目从第3条列线开始 */
.grid-item:nth-child(4) {
grid-column-start: 3;
}
/* 让第5个网格项目从第1条列线开始,形成交错效果 */
.grid-item:nth-child(5) {
grid-column-start: 1;
}
对应的HTML结构如下:
<div class="grid-container">
<div class="grid-item">项目1</div>
<div class="grid-item">项目2</div>
<div class="grid-item">项目3</div>
<div class="grid-item">项目4</div>
<div class="grid-item">项目5</div>
<div class="grid-item">项目6</div>
</div>
不同错位效果的实现
交替错位效果
如果需要实现每行项目交替错位的效果,可以结合nth-child选择器和grid-column-start配合,让奇数行和偶数行的项目起始位置不同。
/* 奇数行的项目从第1条线开始 */
.grid-item:nth-child(6n+1),
.grid-item:nth-child(6n+2),
.grid-item:nth-child(6n+3) {
grid-column-start: 1;
}
/* 偶数行的项目从第2条线开始 */
.grid-item:nth-child(6n+4) {
grid-column-start: 2;
}
.grid-item:nth-child(6n+5) {
grid-column-start: 3;
}
.grid-item:nth-child(6n+6) {
grid-column-start: 4;
}
结合grid-column-end实现跨列错位
如果需要让错位项目同时跨越多列,可以配合grid-column-end属性一起使用,设置项目的结束列线位置。
/* 项目跨2列,从第2条线开始到第4条线结束 */
.grid-item.span-col {
grid-column-start: 2;
grid-column-end: 4;
}
注意事项
- 设置grid-column-start时要确保值不超过网格容器的列线总数,否则项目会溢出到隐式网格中
- 如果多个项目设置了重叠的网格区域,后面的项目会覆盖在前面的项目上方,需要合理规划起始位置
- 响应式布局中可以通过媒体查询修改grid-column-start的值,适配不同屏幕尺寸下的错位效果
- 如果项目设置了grid-column-start后不想占据默认位置的空间,可以配合grid-row-start调整行位置,避免留白
适用场景
错位网格布局适合用在以下场景:
- 图片画廊展示,让不同尺寸的图片错落排列
- 产品卡片列表,打破规整排列的单调感
- 博客文章列表,突出部分重点内容
- landing page的特色内容区域,提升视觉吸引力
CSS_gridgrid-column-start错位网格布局网格偏移修改时间:2026-06-09 12:06:26