[英]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 创建这种网格布局。
<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>
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.