寻找~
角色并不容易。我正在查看一些 CSS 并发现了这个
.check:checked ~ .content {
}
这是什么意思?
选择~
器实际上是General 兄弟组合器(在选择器 Level 4中重命名为 Subsequent-sibling 组合器):
通用兄弟组合符由分隔两个简单选择器序列的“波浪号”(U+007E,~)字符组成。两个序列表示的元素在文档树中共享相同的父元素,并且第一个序列表示的元素在(不一定立即)第二个序列表示的元素之前。
考虑以下示例:
.a ~ .b {
background-color: powderblue;
}
<ul>
<li class="b">1st</li>
<li class="a">2nd</li>
<li>3rd</li>
<li class="b">4th</li>
<li class="b">5th</li>
</ul>
.a ~ .b
匹配第 4 和第 5 个列表项,因为它们:
.b
元素 .a
.a
在 HTML 源代码顺序之后。同样,.check:checked ~ .content
匹配与其同级并出现在其之后.content
的所有元素。.check:checked
还可以检查家族中的其他组合子并回到这个特定的组合子是什么。
ul li
ul > li
ul + ul
ul ~ ul
示例清单:
ul li
-向内看- 选择放置(任何地方)的所有元素;后代选择器li
ul
ul > li
-向内看- 仅选择;的直接 li
元素 ul
即它只会选择 ; 的直接子li
级ul
。子选择器或子组合器选择器ul + ul
-向外看- 选择ul
紧随其后的ul
; 它不是向内看,而是向外寻找紧随其后的元素;相邻兄弟选择器ul ~ ul
-向外看- 选择ul
后面的所有内容,ul
不管它在哪里,但两者都ul
应该有相同的父级;通用兄弟选择器我们在这里看到的是通用兄弟选择器
General sibling combinator
@Salaman 的回答很好地解释了这一点。
我确实错过的Adjacent sibling combinator
是+
与~
.
例子是
.a + .b {
background-color: #ff0000;
}
<ul>
<li class="a">1st</li>
<li class="b">2nd</li>
<li>3rd</li>
<li class="b">4th</li>
<li class="a">5th</li>
</ul>
.b
.a
.a
HTML之后在上面的示例中,它将标记为第二li
而不是第四。
.a + .b {
background-color: #ff0000;
}
<ul>
<li class="a">1st</li>
<li class="b">2nd</li>
<li>3rd</li>
<li class="b">4th</li>
<li class="a">5th</li>
</ul>
请注意,在属性选择器(例如[attr~=value]
)中,波浪号
表示属性名称为attr的元素,其值是以空格分隔的单词列表,其中一个恰好是value。
https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors