Targeting the last div before flexbox or float wraps the rest
我想知道是否有一个CSS选择器可以自动将flexbox或float创建的行中的最后一个div作为目标。
在我们的特殊用途中,我们有一个具有不同宽度图像的图像网格。在其全宽范围内,有3个图像的行(每个33%)和2个图像的行(50/50或60/40)。使用垂直平板电脑查看时,所有图像都会更改为50%,每行两张,在手机上为100%。所有图像都在一个整体容器中,而不是行容器(因为三个容器变为两个)。
像许多网格类型的布局一样,我们有2%的页边距权限,需要在最右边的分区重置为0。
目前使用传统的"last"类来手动删除页边距,并使用伪:nth子级(奇数)来操作垂直平板布局。我在玩两个变种,一个使用浮球,一个使用flexbox。
在每种情况下,是否有一个针对最后一个DIV的CSS选择器?
扩展布局:
在全尺寸显示器上| img1-33%2%img2-33%2%img3-33%|| IMG4-40%2%IMG5-60%|| IMG6-33%2%IMG7-33%2%IMG8-33%|
在垂直平板上| img1-50%2%img2-50%|| IMG3-50%2%IMG4-50%|| IMG5-50%2%IMG6-50%|| IMG7-50%2%IMG8-50%|
在电话上IIMG1—100%IIMG2—100%iMg3-- 100%IMG4—100%等我知道我的百分比不加起来。
基本上是@vals所说的,但还有一些细节:
- 让所有弹性项目都有相同的利润率,
m 。 - 相应地设置宽度。例如,如果要在一行中使用
n 相等元素,请设置width: calc(100%/n - m) 。 - 让flex容器溢出其包含块,以隐藏不需要的边距。使用
margin: -m 来实现这一点。 - 将柔性容器放在带有
overflow: hidden 的包装器中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | .wrapper { overflow: hidden; border: 1px solid; } .flex { display: flex; flex-wrap: wrap; margin-right: -2%; text-align: center; } span { margin-right: 2%; border: 1px solid red; box-sizing: border-box; } span:nth-child(-n + 3) { width: calc(100%/2 - 2%); } span:nth-child(n + 6) { width: calc(100%/3 - 2%); } span:nth-child(1) { width: calc(100% - 2%); } span:nth-child(4) { width: calc(100%*.4 - 2%); } span:nth-child(5) { width: calc(100%*.6 - 2%); } |
1 2 3 4 5 6 7 8 | <span>100%</span> <span>49%</span> <span>49%</span> <span>39%</span> <span>59%</span> <span>32%</span> <span>32%</span> <span>32%</span> |
不,没有一个很酷的CSS选择器可以实现这一点。
我知道的唯一容易得到这个效果的方法是设置一个包装到您的flexbox容器。
让flexbox容器中的所有元素具有相同的2%右边距。
并将flexbox容器设置为包装器右侧有2%的溢出,这将被隐藏。所以你会有这样的错觉:元素与包装器的右边框对齐。