Tom*_*Tom 5 html css css-float flexbox
我想知道是否有一个 CSS 选择器可以自动神奇地定位由 flexbox 或 float 创建的行上的最后一个 div。
在我们的特定用途中,我们有一个具有不同宽度图像的图像网格。在其全宽度中,有包含 3 个图像的行(每行 33%)和包含 2 个图像的行(50/50 或 60/40)。当使用垂直平板电脑查看时,所有图像都会更改为 50%,并且每行两个,而在手机上则为 100%。所有图像都位于单个整体容器中,而不是行容器中(因为三个变成了两个)。
像许多网格类型布局一样,我们有 2% 的右边距,需要在最右边的 div 上将其重置为 0。
目前使用传统的“last”类手动删除边距,并使用伪 :nth-child(odd) 来操纵垂直平板电脑布局。我正在玩两种变体,一种使用浮动,一种使用弹性盒。
是否有一个 css 选择器可以在每种情况下定位最后一个 div?
扩展布局:
在全尺寸显示器上
|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%|
在电话上
|img1 - 100%|
|img2 - 100%|
|img3 - 100%|
|img4 - 100%|
等等 ps我知道我的百分比没有相加。
基本上就是@vals所说的,但还有一些更多细节:
\n\nm。n一行中的元素相等,请设置width:\xc2\xa0calc(100%/n\xc2\xa0-\xc2\xa0m)。margin:\xc2\xa0-m来实现这一点。overflow:\xc2\xa0hidden。.wrapper {\r\n overflow: hidden;\r\n border: 1px solid;\r\n}\r\n.flex {\r\n display: flex;\r\n flex-wrap: wrap;\r\n margin-right: -2%;\r\n text-align: center;\r\n}\r\nspan {\r\n margin-right: 2%;\r\n border: 1px solid red;\r\n box-sizing: border-box;\r\n}\r\nspan:nth-child(-n + 3) { width: calc(100%/2 - 2%); }\r\nspan:nth-child(n + 6) { width: calc(100%/3 - 2%); }\r\nspan:nth-child(1) { width: calc(100% - 2%); }\r\nspan:nth-child(4) { width: calc(100%*.4 - 2%); }\r\nspan:nth-child(5) { width: calc(100%*.6 - 2%); }Run Code Online (Sandbox Code Playgroud)\r\n<div class="wrapper">\r\n <div class="flex">\r\n <span>100%</span>\r\n <span>49%</span>\r\n <span>49%</span>\r\n <span>39%</span>\r\n <span>59%</span>\r\n <span>32%</span>\r\n <span>32%</span>\r\n <span>32%</span>\r\n </div>\r\n</div>Run Code Online (Sandbox Code Playgroud)\r\n