CSS3在列表末尾选择余数

时间:2019-05-07 17:19:18

标签: javascript css

我想知道是否可以使用CSS选择器选择列表的其余部分。例如:

说我有一个未知长度的列表,但是我想在每个分组(n)中显示的元素数量是已知的,但是是可变的。
对于所有元素,除了最后一次完整分组之后的其余元素,我想在底部添加margin-bottom。这个列表的长度在渲染之前是未知的,因此我正在寻找一种纯CSS方法。

我坚信这将是一个具有挑战性的问题,因为每个组中的数字都是变量,所以硬编码的解决方案将不起作用。

我知道这似乎很简单,但是我还没有找到可以实现此目的的nth-child(),not(),〜等组合。此外,例如,如果我将每行元素数的参数从3更改为5,则最后4个元素就是我想要选择的。

Edit2: 抱歉,我确实应该澄清。我正在使用React / Redux框架并编写JavaScript和样式化组件,但话要说:

据我所知,我无法应用类来帮助完全分隔此列表。我无法将它们分组为带有类的行,此外,出于所有意图和目的,我都希望添加一个仅使用索引逻辑的解决方案。

到目前为止,我唯一的直觉是,如果我能找到一种方法来传递列表的长度,从而计算出余数,但是在渲染之前,该长度是未知的。

3 个答案:

答案 0 :(得分:0)

使用nth-child()选择器

根据您的情况:

 li:nth-child(13) {

}

 li:nth-child(14) {

}

检查此链接以获取更多详细信息https://www.w3schools.com/cssref/sel_nth-child.asp

如果您有兴趣选择列表的最后一个元素(或其前面的任何元素),则可以使用:nth-last-child()选择器

检查https://www.w3schools.com/cssref/sel_nth-last-child.asp

答案 1 :(得分:0)

这将选择列表的最后3 li。

li:nth-last-child(-n+3)

答案 2 :(得分:0)

.container:not(:last-child) .element {
  margin-bottom: 10px;
}

其中.container是所有行周围的容器,而.element是单独编号的项目
(您的示例中为13 + 14)