CSS伪选择器可包含任意数量元素吗?如何高效匹配特定嵌套ul
解决方案:匹配路径中无其他ul的ul.this后代ul
核心选择器
直接使用以下单个选择器即可覆盖所有符合要求的场景:
ul.this ul:not(ul ul)
选择器解析
ul.this ul:选中所有属于ul.this后代的ul元素,不管中间间隔多少层非ul元素。:not(ul ul):排除那些本身是其他ul元素后代的ul,这就确保了从ul.this到目标ul的路径中,不会出现任何额外的ul节点,完全匹配你设定的规则。
匹配验证
对应你给出的DOM片段:
- 匹配项:
ul.this>li>ul、ul.this>li>div>ul、ul.this>li>div>menu>div>nav>div>div>div>div>ul等所有路径无其他ul的后代ul,都会被选中。 - 不匹配项:
ul.this>li>ul>li>div>ul、ul.this>li>div>ul>li>div>ul这类路径中包含其他ul的元素,会被:not(ul ul)排除,不会被选中。
补充说明
CSS选择器没有类似正则表达式的重复量词(如*、+),但通过后代选择器 + 否定伪类的组合,就能实现“允许任意数量非ul元素间隔”的匹配需求,无需手动编写多层重复的:not(ul)选择器。
内容的提问来源于stack exchange,提问作者rhavin
相关产品推荐
相关产品推荐

