我在商店里展示产品。每个产品都有自己的盒子。我想将盒子放在一个网格中,每行 2 个。但是它们也将被划分为类别,因此我想在属于该类别的每组框上方放置一个全角标题。这是我的 HTML:
<section class="product-listing">
<h2>Category 1</h2>
<section>first</section>
<section>second</section>
<section>third</section>
<h2>Category 2</h2>
<section>fourth</section>
<section>fifth</section>
<h2>Category 3</h2>
<section>sixth</section>
<section>seventh</section>
<section>eighth</section>
<section>ninth</section>
</section>
和 CSS:
.product-listing {
width:410px; height:100%
background:#000;
}
.product-listing > section {
float:left;
width:200px;
margin:10px 10px 0 0;
background:#ff0000;
}
.product-listing > section:nth-of-type(2n+2){
margin-right:0;
}
如您所见,网格工作正常,直到引入第二个 h2 元素,之后它分崩离析,因为如果最后一组具有奇数个框,则 2n+2 被丢弃。基本上我需要做的是在每个标题之后重置 2n+2 公式。
快速而肮脏的方法是将每组框包装在一个 div 中,但如果可以避免的话,我宁愿不向页面引入不必要的标记。
有更清洁的解决方案吗?