是否有连续兄弟姐妹的CSS选择器

Gia*_*las 3 css css-selectors

我有一个列表:

<ul>
  <li>Something</li>
  <li class="class1">Important</li>
  <li>I want this</li>
  <li>I want this</li>
  <li class="class1">Important</li>
  <li>I want this</li>
  <li>I want this</li>
  <li>Something</li>
  <li>Something</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

<li>每个.class1元素后面的第二个是否有CSS选择器?

zzz*_*Bov 8

.class1 + li将选择第一个后续兄弟姐妹.
.class1 + * + li将选择第二个.

为了保持特异性低,您还可以使用:

.class1 + *,
.class1 + * + * {...}
Run Code Online (Sandbox Code Playgroud)

但这是因为.class1只有选择适当的li元素才能理解.


这两者都是脆弱的选择者.很脆弱,当你改变标记时它们会破坏.考虑添加更多类来定位适当的元素,并保持低特异性.

  • @Martin,那么[lobotomized owl selector](http://alistapart.com/article/axiomatic-css-and-lobotomized-owls)可能会让你大吃一惊. (2认同)
  • "这两个都是脆弱的选择器.当你改变标记甚至一点点时,它们会破碎." 那不是那么一点吗?OP*only*想要定位紧跟每个li的两个li元素.通过向以下两个元素中的每个元素添加类来为标记增加毫无意义只是为了能够定位它们*如果它们只会出现在那个上下文中* - 如果你按顺序分配了那些类,那么类选择器你提议会不正确地匹配,而*那就是我称之为脆弱的东西. (2认同)