简体   繁体   English

CSS 带标题的砌体网格?

[英]CSS Masonry Grid with Headings?

I have an existing project I'm trying to move to a masonry-like layout without modifying the DOM structure.我有一个现有项目,我正试图在不修改 DOM 结构的情况下转移到类似砖石的布局。

I'm wondering if it's possible to create this sort of grid layout from the existing DOM.我想知道是否可以从现有的 DOM 创建这种网格布局。

The DOM looks like this: DOM 看起来像这样:

<div id="masonry-container">
  <div class="heading"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="heading"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
</div>

The intended end result would be something like this:预期的最终结果将是这样的:

在此处输入图像描述

You just need to make .heading element span full column width and some of the elements to span 2 rows.您只需要使.heading元素跨越整个列宽,并且一些元素跨越 2 行。

 #masonry-container { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 50px; grid-gap: 5px; }.item, .heading { background: #fc9; border-radius: 5px; }.heading { grid-column: 1 / -1; background: #fc3; }.span2 { grid-row: span 2; }
 <div id="masonry-container"> <div class="heading">Heading</div> <div class="item"></div> <div class="item span2"></div> <div class="item"></div> <div class="item span2"></div> <div class="item span2"></div> <div class="item span2"></div> <div class="heading">Heading</div> <div class="item"></div> <div class="item span2"></div> <div class="item"></div> <div class="item span2"></div> <div class="item span2"></div> <div class="item span2"></div> </div>

You can try like below:您可以尝试如下:

 #masonry-container { display: grid; grid-auto-flow: dense; grid-auto-rows: 50px; grid-gap: 5px; } #masonry-container > * { background: red; border-radius: 5px; }.heading { grid-column: span 4; }.item:nth-child(7n + 3), .item:nth-child(7n + 6) { grid-row: span 2; grid-column: 1; }.item:nth-child(7n + 4), .item:nth-child(7n + 7) { grid-row: span 3; grid-column: 2; height: 66%; }.item:nth-child(7n + 6) { grid-column: 3; }.item:nth-child(7n + 7) { grid-column: 4; }
 <div id="masonry-container"> <div class="heading"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="heading"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM