Что означает селектор CSS "~" (тильда/кручёная)?
Заголовок: Не могу понять значение символа ~
в CSS
Тело вопроса:
Я столкнулся с трудностями в поиске символа ~
в CSS. При изучении стилей увидел следующий код:
.check:checked ~ .content {
}
Что он означает?
1 ответ(ов)
Вам нужно понять разницу между селекторами ~
и +
в CSS, и вы совершенно правы, что они действуют по-разному в контексте выбора соседних элементов. Давайте рассмотрим каждый из них подробнее:
Селектор ~
(Общий сосед)
Селектор ~
используется для выбора всех соседних элементов, которые следуют после указанного элемента, независимо от того, сколько их и как они сгруппированы. В вашем примере:
.a ~ .b {
background-color: powderblue;
}
Этот селектор применит стиль к каждому элементу с классом .b
, который следует за любым элементом с классом .a
, даже если между ними есть другие элементы. Вот как это выглядит на примере HTML:
<ul>
<li class="a">1st</li>
<li class="b">2nd</li>
<li class="c">3rd</li>
<li class="a">4th</li>
<li class="b">5th</li>
<li class="b">6th</li>
</ul>
В данном случае стиль background-color: powderblue;
будет применён ко всем элементам <li class="b">
, которые идут после <li class="a">
.
Селектор +
(Сосед)
Селектор +
, напротив, выбирает только один соседний элемент, который непосредственно следует за указанным элементом. Пример использования:
.a + .b {
background-color: powderblue;
}
Этот селектор применит стиль только к единственному элементу с классом .b
, который идет сразу за любым элементом .a
. В том же примере HTML:
<ul>
<li class="a">1st</li>
<li class="b">2nd</li>
<li class="c">3rd</li>
<li class="a">4th</li>
<li class="b">5th</li>
<li class="b">6th</li>
</ul>
Здесь стиль background-color: powderblue;
будет применён только к первому элементу <li class="b">
, который идет сразу после <li class="a">
.
Итак, в кратце:
+
- выбирает одного соседнего элемента.~
- выбирает всех соседних элементов.
Надеюсь, это поможет вам лучше понять разницу между этими селекторами! Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать.
Существует ли селектор родителя в CSS?
Какие символы допустимы в именах классов/селекторах CSS?
Существует ли селектор "предыдущий брат"?
CSS-селектор для первого элемента с классом
Использование подстановочного знака * в CSS для классов