w3schools对它的说法,它们听起来是一样的。
之后的所有
div + p
选择紧跟在<p>
元素<div>
元素的每个
div ~ p
选择前面带有<p>
元素<div>
元素
如果<p>
元素紧跟在<div>
元素之后,这是否意味着<p>
元素前面有<div>
元素?
无论如何,我正在寻找一个选择器,我可以选择一个元素,该元素会在之前放置。
答案 0 :(得分:100)
相邻的兄弟选择器X + Y
相邻的兄弟选择器具有以下语法:E1 + E2,其中 E2是选择器的主题。选择器匹配E1和E2 在文档树中共享同一个父级,E1紧接在之前 E2,忽略非元素节点(如文本节点和注释)。
ul + p {
color: red;
}
在这个例子中,它只会选择 紧接在前一个元素之前的元素。在这 例如,每个ul后只有第一段会有红色文字。
ul + p {
color: red;
}
<div id="container">
<ul>
<li>List Item</li>
<li>List Item</li>
<li>List Item</li>
<li>List Item</li>
</ul>
<p>This will be red</p>
<p>This will be black</p>
<p>This will be black</p>
</div>
一般兄弟选择器X~Y
〜组合器分离两个选择器并匹配第二个选择器 元素只有在第一个元素之前,并且两者共享一个共同元素 父节点。
ul ~ p {
color: red;
}
这个兄弟组合器类似于X + Y,但它更少 严格。而相邻的选择器(ul + p)只会选择第一个 紧接着前一个选择器的元素,这个元素 更普遍。它会选择,参考上面的例子, 任何p元素,只要它们遵循ul。
ul ~ p {
color: red;
}
<div id="container">
<ul>
<li>List Item
<ul>
<li>Child</li>
</ul>
</li>
<li>List Item</li>
<li>List Item</li>
<li>List Item</li>
</ul>
<p>This will be red.</p>
<p>This will be red.</p>
<p>This will be red.</p>
<p>This will be red.</p>
</div>
<强>来源
答案 1 :(得分:17)
如果
<p>
元素紧跟在<div>
元素之后,那么这是否意味着<p>
元素前面有<div>
元素?
这是对的。换句话说,div + p
是div ~ p
的正确子集 - 前者匹配的任何内容也后者必然匹配。< / p>
+
和~
之间的区别在于~
匹配所有后续兄弟姐妹,无论他们与第一个元素的接近程度如何,只要它们共享同一个父级。
这两点最简洁,只有一个例子,每个规则都适用不同的属性。请注意,紧跟p
之后的那个div
同时应用了两个规则:
div + p {
color: red;
}
div ~ p {
background-color: yellow;
}
&#13;
<section>
<div>Div</div>
<p>Paragraph</p>
<p>Paragraph</p>
<p>Paragraph</p>
</section>
<section>
No div
<p>Paragraph</p>
<p>Paragraph</p>
<p>Paragraph</p>
</section>
&#13;
无论如何,我正在寻找一个选择器,我可以选择一个在之前立即的元素。
不幸的是,there isn't one yet。
答案 2 :(得分:5)
考虑这个例子:
p + p { /* the first p immediately after a preceding p */
color: red;
}
p ~ p { /* all p's after a preceding p */
font-weight: bold;
}
<div>
<p>1</p>
<div>separator</div>
<p>2</p> <!-- only ~ is applied here -->
<p>3</p> <!-- both + and ~ are applied here -->
</div>
答案 3 :(得分:0)
1)相邻的同级选择器(S1 + S2)
相邻的同级选择器用于选择紧邻另一个指定元素的指定元素。这两个元素应该在同一级别。
div + p {
color:red;
}
Adjacent Sibling Selectors example
2)常规同级选择器(S1〜S2)
通用同级选择器用于选择另一个指定元素的所有指定同级元素。
div ~ p {
color:red;
}
General Sibling Selectors example
相邻兄弟(S1 + S2)与常规兄弟(S1〜S2)选择器:
相邻兄弟(S1 + S2)选择器仅选择直接兄弟元素,而常规兄弟(S1〜S2)选择器选择另一个指定元素的所有兄弟元素。两种情况下,两个元素(S1和S2)都应处于同一级别。
剩余的选择器在这里说明: https://www.csssolid.com/35-css-selectors-to-remember.html