div~div和div之间的区别:not(:first-of-type)?

时间:2014-11-29 03:52:22

标签: html css html5 css3 css-selectors

div~divdiv:not(:first-of-type)之间有区别吗?除了IE6以外,无论出现什么错误,都会有不同的情况吗?

1 个答案:

答案 0 :(得分:5)

在匹配元素方面,没有区别。在同一父级中跟随其他div的任何div必然不是其父级中div类型的第一个元素。

如果兄弟选择器是+而不是~,则div+div具有以下元素必须紧接在前一元素之后出现的附加条件。 ~不是这种情况 - 任何其他类型的兄弟姐妹都可能出现在两者之间。

如果伪类是:first-child而不是:first-of-type,那么如果其父级中的第一个div:not(:first-child)不是div:first-of-type,那么div仍会匹配<section> <div></div> <!-- div:first-child or div:first-of-type --> <div></div> <!-- div+div or div~div or div:nth-of-type(2) --> <p></p> <div></div> <!-- div+p+div or div~div or div:nth-of-type(3), but not div+div --> </section> <section> <h1></h1> <!-- h1:first-child --> <div></div> <!-- div:first-of-type or div:nth-child(2) --> <div></div> <!-- div~div or div:nth-of-type(2) or div:nth-child(3) --> </section> 第一个孩子。

以下是插图:

div:not(:first-of-type)

specificity而言,存在差异。如果你有两个选择器匹配相同元素的CSS规则,那么由于:first-of-type伪类,:not()将优先。请注意,div { float: left; width: 50px; height: 50px; margin: 5px; border: 1px solid red; } /* 1 pseudo-class, 1 type -> specificity = 0-1-1 */ div:not(:first-of-type) { border-color: green; } /* 2 types -> specificity = 0-0-2 */ div ~ div { border-color: blue; }本身不计算 - 只考虑其参数。

这是另一个例子:

<section>
    <div></div>
    <div></div>
    <div></div>
</section>
{{1}}