11

Что означает селектор CSS "~" (тильда/кручёная)?

18

Заголовок: Не могу понять значение символа ~ в CSS

Тело вопроса: Я столкнулся с трудностями в поиске символа ~ в CSS. При изучении стилей увидел следующий код:

.check:checked ~ .content {
}

Что он означает?

1 ответ(ов)

0

Вам нужно понять разницу между селекторами ~ и + в 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">.

Итак, в кратце:

  • + - выбирает одного соседнего элемента.
  • ~ - выбирает всех соседних элементов.

Надеюсь, это поможет вам лучше понять разницу между этими селекторами! Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь