本文详解如何通过 CSS Grid 的 grid-auto-flow: dense 与 nth-child 选择器,让图文卡片在移动设备上垂直堆叠,在 ≥768px 屏幕中自动重排为“右图左文”交替布局,无需改变 HTML 结构。
本文详解如何通过 css grid 的 grid-auto-flow: dense 与
要实现「移动端单列堆叠、桌面端图文交错(第二行起:右侧图片 + 左侧文字)」的响应式网格重排序,核心在于利用 css grid 的自动填充流(dense packing) 和精确项定位能力,而非依赖 flexbox 或 javascript。
.container { display: grid; gap: 20px; grid-template-columns: repeat(12, 1fr);}.container > * { grid-column: span 12; /* 移动端全宽 */}@media (min-width: 768px) { .item { grid-column: span 6; /* 桌面端基础宽度:半列 */ } /* 图片项 → 放置到右侧(列 7–12) */ .item:nth-child(4n-1) { grid-column: 7 / span 6; } /* 文字项 → 放置到左侧(列 1–6) */ .item:nth-child(4n) { grid-column: 1 / span 6; } /* 启用密集填充,使项能回填空位 */ .container { grid-auto-flow: dense; }}
<div class="container"> <div class="item"><img src="image1.jpg" alt="Image 1"></div> <div class="item"><p>Text 1</p></div> <div class="item"><img src="image2.jpg" alt="Image 2"></div> <div class="item"><p>Text 2</p></div> <div class="item"><img src="image3.jpg" alt="Image 3"></div> <div class="item"><p>Text 3</p></div> <!-- 更多项可无限追加,规律自动延续 --></div>
该方案轻量、纯 CSS、无 JS 依赖,完美契合渐进增强理念,是响应式图文网格重排序的经典实践。