4

如果正好有 5 个,我想要所有 5 个孩子。(如果有 4 个或 6 个,不要选择任何孩子。)

为了说明:http: //jsfiddle.net/rudiedirkx/339H6/3/show/

如果有 1 个非常简单的元素,您可以选择所有元素:

:first-child:last-child

您可以选择前 5 个和后 5 个中的元素:

:nth-child(-n+5):nth-last-child(-n+5)

(演示中的红色)两者都没有做我想要的,但说明了一点:1个选择器,几个元素。

如果有 5 个和 5 个选择器,您可以选择所有子级:

li:nth-child(1):nth-last-child(5),
li:nth-child(2):nth-last-child(4),
li:nth-child(3):nth-last-child(3),
li:nth-child(4):nth-last-child(2),
li:nth-child(5):nth-last-child(1)

(小提琴中的黄色)但这太可怕了。当我决定我也喜欢 4 时,这是双重可怕的:如果恰好有 4 或 5 个元素,请全部选择它们。这将需要 4 个更多的选择器。

有没有一种我想念的体面的方法来做到这一点?我觉得自己:nth-child(-n+5):nth-last-child(-n+5)走上了正轨,但选择的范围太广了。(小提琴中的绿色。)

4

1 回答 1

7

在确定第一个孩子也是倒数第五个孩子之后,您可以使用通用兄弟组合器来选择其余元素:

li:first-child:nth-last-child(5), 
li:first-child:nth-last-child(5) ~ li

不幸的是,您仍然必须至少重复一次选择器,因为您需要一个来匹配第一个孩子,然后另一个与兄弟组合器匹配其余的。但这绝对比再重复四次要好。

于 2013-04-30T13:40:07.443 回答