【发布时间】:2021-07-22 06:19:24
【问题描述】:
我有一个包装纸和里面的一些物品。我想在每一行中将两个项目相邻放置。我用flexbox 解决了这个问题。
我的包装器具有属性flex-wrap: wrap;,我的物品具有属性:flex: 0 0 45%;。所以我的每个项目都使用了 50% 的行(包括边距)。我使用margin 在右侧创建一个间隙,在项目之间在底部创建一个间隙。这几乎像我预期的那样工作。
现在我的问题:有没有办法忽略每行中第二个项目上的margin-right(它包装的地方),所以第二个项目也与左边的项目一样与包装器的右侧对齐.目前,由于margin-right,行尾也有一个空白。我想消除这个差距。纯CSS 可以吗? last-child 只是删除了最后一项上的margin-right,但这很清楚原因。有没有办法在项目包装的行尾删除它?希望这足够清楚。
在我的 sn-p 下方:
.wrapper {
display: flex;
flex-wrap: wrap;
flex-direction: row;
border: 1px solid black;
width: 768px;
}
.wrapper__item {
flex: 0 0 45%;
width: 330px;
height: 160px;
margin: 0 36px 18px 0;
background-color: lightcoral;
}
<div class="wrapper">
<div class="wrapper__item">Item</div>
<div class="wrapper__item">Item</div>
<div class="wrapper__item">Item</div>
<div class="wrapper__item">Item</div>
<div class="wrapper__item">Item</div>
<div class="wrapper__item">Item</div>
</div>
这也是我想删除右边距的屏幕截图(见箭头):
【问题讨论】:
-
有很多方法可以解决这个问题,但是有一个问题,如果只有 1 个项目,例如最后一行? ...如果,它应该居中,拉伸,左对齐,...?
-
@LGSon 这是一个很好的问题:如果一行中有更多项目,例如三个,它必须再次删除该行最后一个项目的边距。跨度>
-
知道了。如果每行有 3 个项目,总共有 10 个项目怎么办。那将在最后一行留下一个项目。该项目应该如何表现? ...与其他尺寸相同或采用全宽,居中或左对齐,...?
-
@LGSon 与其他大小相同。它应该是这样的:在智能手机上只有一个项目和一个滑块,所以你可以滑过它。平板电脑它们必须连续 2 行 50% 的行。以及 1024px 和更高的 viepowrt 4。所以我可以用 nth-child(2n) 和 nth-child(4n) 轻松解决这个问题,这是使用 medie 查询最简单的方法。 :) 还是谢谢