Как применить стиль к родителю если потомок имеет класс?

Существует несколько способов применить стиль к родителю, если потомок имеет определенный класс. Вот несколько примеров:

1. Селектор "!" (перевернутый восклицательный знак) - это псевдокласс, который позволяет выбирать родительский элемент, если его потомок имеет определенный класс. Например, если у вас есть HTML код следующего вида:

<div class="parent">
  <div class="child"></div>
</div>

и вы хотите применить стиль к родительскому элементу с классом "parent", если потомок имеет класс "child", вы можете использовать следующий CSS код:

.child {
  background-color: red;
}

.parent! .child {
  background-color: blue;
}

В этом примере стиль синего фона будет применяться к родителю с классом "parent", только если в нем есть потомок с классом "child". Обратите внимание на использование символа "!" после селектора родителя.

2. JavaScript - если вам нужно более сложное поведение, вы можете использовать JavaScript для применения стилей к родителю, основываясь на классе потомка. Например, вы можете использовать следующий код на языке JavaScript:

const childElement = document.querySelector('.child');
const parentElement = childElement.parentElement;

if (childElement.classList.contains('child')) {
  parentElement.style.backgroundColor = 'blue';
}

В этом примере стиль синего фона будет применяться к родительскому элементу, только если потомок с классом "child" найден. Обратите внимание на использование метода classList.contains(), чтобы проверить, содержит ли потомок указанный класс.

3. Соседний комбинатор "+" - это CSS комбинатор, который выбирает следующий соседний элемент (или потомка), если он соответствует указанному селектору. Это позволяет вам применить стиль к родительскому элементу, идущему непосредственно после определенного потомка. Например, если у вас есть следующий HTML код:

<div class="parent">
  <div class="child"></div>
  <div></div>
</div>

и вы хотите применить стиль к родительскому элементу, следующему после потомка с классом "child", вы можете использовать следующий CSS код:

.child {
  background-color: red;
}

.child + .parent {
  background-color: blue;
}

В этом примере стиль синего фона будет применяться к родительскому элементу, который идет непосредственно после потомка с классом "child". Обратите внимание на использование селектора .child + .parent.

В зависимости от ваших конкретных потребностей и структуры вашего HTML кода, вы можете выбрать один из этих способов и адаптировать его под вашу задачу.