“〜”(波浪号/波浪形/旋转)CSS选择器是什么意思?


857

搜索~角色并不容易。我查看了一些CSS,发现了这个

.check:checked ~ .content {
}

这是什么意思?


3
检查演示,你就会明白是CSS选择器的列表
迪帕克·

@TylerH,这是Stack Overflow帖子中非常常用的东西,请放轻松,我并不是想让它变得更糟。
Arsen Khachaturyan

@ArsenKhachaturyan也许您误会了;块引用语法用于指示quote,即用户指示某物(文本,图像,代码等)不是他们自己的作品或文字,而是从其他地方复制而来的时候。像所有格式一样,它具有语义目的。它不是随意添加的。同样,请不要随意大胆高亮添加到单词。应该谨慎使用它。
TylerH

@TylerH我知道它的名称是“ quote”,还有“ quote”本身的含义。但是,有时候当您真的想将问题与普通文本区分开时,可以尝试一些像我一样的强调技巧。对于粗体,当您想强调诸如关键字或众所周知的术语之类的内容时,也很明显使用它。我通常不喜欢人们出于未知原因而使用粗体,但是有时人们可以使用它轻松找到与主题相关的信息。
Arsen Khachaturyan

@ArsenKhachaturyan请不要那样做。>仅用于报价不能用于任何其他目的。您也不应该在问题中使用粗体的随机技术名称。我们可以通过标签查看哪些技术是相关的。
meagar

Answers:


1369

~选择器实际上是通用同级组合器(在选择器级别4中重命名为后续同级组合):

通用的同级组合器由分隔两个简单选择器序列的“波浪号”(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并在其后出现的所有元素。


13
“不一定立即”是此描述的关键部分。
PanicBus

1
是否为所有具有相同父元素的元素提供了选择器?
尼克N.

1
@NickN。你的意思是.parent > *
Salman A

@SalmanA不完全是,我希望有一个可以供您使用的选择器,如果您不知道父母的话。
Nick N.

7
@NickN。没有。CSS的主张是CSS解析器从不回退DOM进行匹配。这与没有父选择器的原因相同。
yunzen '17

191

还可以检查该家族中的其他组合器,然后回到这个特定的组合器。

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

清单示例:

  • ul li- 寻找内部 -选择所有li元件放置(任意位置)内的ul; 后代选择器
  • ul > li- 向内看 - 选择的直接li元素ul;即它只会选择直接子女liul; 子选择器子组合器选择器
  • ul + ul- 向外看 -选择ul紧随其后的ul;它不是在寻找内部,而是在寻找紧随其后的元素。相邻兄弟选择器
  • ul ~ ul- 向外看 -选择所有跟在ul后面的东西ul都没关系,但是两者ul应该具有相同的父对象;通用兄弟选择器

我们在这里看到的是通用兄弟选择器


2
这是最有意义的。Layman的术语再次被营救。现在,我可以阅读技术文档。
TheRealChx101 '19

2
是否有所有兄弟姐妹的兄弟姐妹选择器,而不仅仅是后面的兄弟姐妹?
Eli TheHuman

1
@EliTheHuman,不。请参阅本SO职位详细信息- stackoverflow.com/a/11813469/6830901
Lijo约瑟夫

174

通用同级组合器

通用的同级组合器选择器与相邻的同级组合器选择器非常相似。不同之处在于,被选择的元素不需要立即在第一个元素之后,而是可以出现在其后的任何位置。

更多信息


31

它是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在HTML

在上面的示例中,它将标记为2,li而不是4。

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

JSFiddle


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.