搜索
~
字符并不容易。我正在查看一些 CSS 并发现了这个
.check:checked ~ .content {
}
这是什么意思?
~
选择器实际上是后续兄弟组合器(之前称为通用兄弟组合器直到2017年):
后续兄弟组合器由“波形符”组成(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
匹配第四个和第五个列表项,因为它们:
.b
元素.a
.a
之后。同样,
.check:checked ~ .content
匹配 .content
的同级元素并出现在其之后的所有 .check:checked
元素。
很高兴也检查一下家族中的其他组合器,并回到这个特定的组合器是什么。
ul li
ul > li
ul + ul
ul ~ ul
清单示例:
ul li
- 查看内部 - 选择放置在 li
内部(任意位置)的 all元素; 后代组合器
ul
ul > li
的直接li
元素;即它只会选择 ul
的直接子代 li
; 子组合器
ul
ul + ul
之后的 ul
;它不是向内查找,而是向外查找紧随其后的元素; 相邻同级组合器/ 下一个同级组合器
ul
向外看- 选择以下所有
ul ~ ul
,但两个 ul
应该具有相同的父级;
一般同级组合器/ 后续同级组合器
ul
多个相邻的兄弟姐妹
~
.a ~ .b {
background-color: powderblue;
}
<ul>
<li class="a">1st</li>
<li class="b">1st</li>
<li class="c">1st</li>
<li class="a">2nd</li>
<li>3rd</li>
<li class="b">4th</li>
<li class="b">5th</li>
</ul>
<ul>
<li class="a">1st</li>
<li class="b">1st</li>
<li class="c">1st</li>
<li class="a">2nd</li>
<li>3rd</li>
<li class="b">4th</li>
<li class="b">5th</li>
</ul>
恰好一个相邻的兄弟姐妹
+
.a + .b {
background-color: powderblue;
}