什么是“〜”(代字符/ squiggle / twiddle)CSSselect器是什么意思?

search~字符并不容易。 我正在查看一些CSS,并发现这一点

 .check:checked ~ .content { } 

这是什么意思?

~select器实际上是根据select器4级工作草案的通用兄弟组合器 (或兄弟姐妹组合器 ):

一般的兄弟组合是由“代字符”(U + 007E,〜)字符组成的,它将两个简单的select符序列分开。 由两个序列表示的元素在文档树中共享相同的父亲,并且由第一序列表示的元素先于(不一定立即)在由第二个表示的元素之前。

考虑下面的例子:

 .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> 

一般兄弟组合

一般的兄弟组合select器与相邻的兄弟组合select器非常相似。 不同之处在于被选中的元素不需要立即接替第一个元素,而是可以在其之后的任何地方出现。

更多信息

很好也检查在家庭其他combinators并回到这是什么具体的。

  • ul li
  • ul > li
  • ul + ul
  • ul ~ ul

示例清单:

  • ul li向内看 – select在li放置(任何地方)的所有 li元素; 后代select器
  • ul > li向内看selectul 的直接 li元素; 即只select直接的儿童li ; 子select器子组合select器
  • ul + ul向外看 – 在ul立即selectul ; 它不在里面寻找,而是在外面寻找紧接着的元素; 邻居兄弟select器
  • ul ~ ul在外面寻找 – selectul后面的所有ul并不重要,但是两个ul应该有相同的父亲; 一般兄弟姐妹select

我们在这里看到的是一般兄弟select器

这是General sibling combinator并在@萨拉曼的回答很好地解释。

我没有想到的是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之后

在上面的例子中,它将标记2nd li而不是4th。

  .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>