如果我正确理解你的问题,你想针对最后一个li
标记为多个ul
s,其中嵌套层数ul
s 是不可预测的。
您需要一个以包含块中“最后一个也是最深的元素”为目标的选择器,其中该块中位于该元素之前的元素数量未知且不相关。
这似乎不可能选择器2.1 https://www.w3.org/TR/CSS21/selector.html or 选择器3 https://www.w3.org/TR/css3-selectors/#selectors.
The :last-child
, :last-of-type
and nth-child
伪类在嵌套级别固定时起作用。在存在多个不同嵌套级别的列表的动态环境中,这些选择器规则将被破坏。
这将选择最后一个li
在第一级ul
:
div.case > ul > li:last-child
这将选择最后一个li
在第二级ul
:
div.case > ul > li:last-child > ul > li:last-child
这将选择最后一个li
在第三级ul
:
div.case > ul > li:last-child > ul > li:last-child > ul > li:last-child
等等...
然而,解决方案可能存在于选择器4 https://drafts.csswg.org/selectors/#overview,哪些浏览器尚未实现:
li:last-child:not(:has(> li))
该规则针对最后一个孩子li
s 没有后代li
s,符合您的要求。
但是现在,如果您知道每个对象的嵌套级别ul
您可以将一个类应用于每个目标容器li
.
Thanks @BoltClock for help crafting the Selectors 4 rule (see comments).