:nth-last-child 到 select 任意长度列表的后半部分
:nth-last-child to select second half of list of arbitrary length
给定一个任意长度的列表,我如何select列表项的后半部分?
对于我知道列表项数的列表,我可以使用 nth-last-child(-n+x)
,其中 x
是列表项数 / 2,例如:
li:nth-last-child(-n+5) {
color:red;
}
<ul>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
</ul>
但是如果我不知道会有多少列表项,我该怎么做呢?总是会有偶数个列表项。
虽然无法涵盖 CSS 中的所有情况,但您可以根据自己的意愿进行编码。
li:last-child,
li:nth-last-child(2):not(:first-child),
li:nth-last-child(3):not(:nth-child(-n+2)),
li:nth-last-child(4):not(:nth-child(-n+3)),
li:nth-last-child(5):not(:nth-child(-n+4))
/* ...... */
{
color:red;
}
li:last-child,
li:nth-last-child(2):not(:first-child),
li:nth-last-child(3):not(:nth-child(-n+2)),
li:nth-last-child(4):not(:nth-child(-n+3)),
li:nth-last-child(5):not(:nth-child(-n+4))
/* ...... */
{
color:red;
}
ul{float:left}
<ul>
<li>some text</li>
<li>some text</li>
</ul>
<ul>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
</ul>
<ul>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
</ul>
<ul>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
</ul>
<ul>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
</ul>
<ul>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>(not coded for)</li>
<li>(this should be red)</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
</ul>
在纯 CSS 中不可能,正如已在此处回答的那样:Selecting half the elements with :nth-child?
如果您不知道自己将拥有多少物品,您将需要使用 JavaScript 来 select 一半您想要的物品。
给定一个任意长度的列表,我如何select列表项的后半部分?
对于我知道列表项数的列表,我可以使用 nth-last-child(-n+x)
,其中 x
是列表项数 / 2,例如:
li:nth-last-child(-n+5) {
color:red;
}
<ul>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
</ul>
但是如果我不知道会有多少列表项,我该怎么做呢?总是会有偶数个列表项。
虽然无法涵盖 CSS 中的所有情况,但您可以根据自己的意愿进行编码。
li:last-child,
li:nth-last-child(2):not(:first-child),
li:nth-last-child(3):not(:nth-child(-n+2)),
li:nth-last-child(4):not(:nth-child(-n+3)),
li:nth-last-child(5):not(:nth-child(-n+4))
/* ...... */
{
color:red;
}
li:last-child,
li:nth-last-child(2):not(:first-child),
li:nth-last-child(3):not(:nth-child(-n+2)),
li:nth-last-child(4):not(:nth-child(-n+3)),
li:nth-last-child(5):not(:nth-child(-n+4))
/* ...... */
{
color:red;
}
ul{float:left}
<ul>
<li>some text</li>
<li>some text</li>
</ul>
<ul>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
</ul>
<ul>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
</ul>
<ul>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
</ul>
<ul>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
</ul>
<ul>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>(not coded for)</li>
<li>(this should be red)</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
<li>some text</li>
</ul>
在纯 CSS 中不可能,正如已在此处回答的那样:Selecting half the elements with :nth-child?
如果您不知道自己将拥有多少物品,您将需要使用 JavaScript 来 select 一半您想要的物品。