选择除第一个子元素之外的元素之后

时间:2016-01-11 14:11:50

标签: css css-selectors less

我想编译下一个LESS规则: - 当前元素之后的每个元素,第一个孩子除外

看起来应该是这样的:

(& ~ *):not(:first-child) {
  margin-left: 5px;
}

或者这个:

& ~ *:not(:first-child) {
  margin-left: 5px;
}

不幸的是,两个人都没有工作。

1 个答案:

答案 0 :(得分:7)

:first-child伪类始终引用其父级的第一个子级。它不能用于忽略引用元素后面的第一个子(兄弟)。

如果要选择除引用元素后面的第一个元素以外的所有元素,则应按如下方式编写:

.reference + * ~ *{
  color: red;
}

.reference是引用元素,+ *引用引用元素的第一个兄弟,它可以是任何类型,~ *引用所有后续兄弟元素任何类型。

在Less中,您可以使用上面提供的选择器(或),您可以像下面这样编写它:

.reference {
  & + * ~ * {
    color: red;
    /* and any other rules */
  }
}

以下代码段演示了这一点。



.reference + * ~ *{
  color: red;
}

<div class='reference'>Reference Element</div>
<p>Some other element which is the first one after reference element</p>
<div>The elements to be selected</div>
<p>The element to be selected</p>
&#13;
&#13;
&#13;