Можно ли из дочернего элемента изменить стиль родительского элемента

«Можно ли из дочернего элемента изменить стиль родительского элемента» — вопрос из категории CSS, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, можно, но не напрямую. В CSS нет селектора для выбора родителя по дочернему элементу. Однако есть несколько обходных путей:

  1. Использование JavaScript:
const child = document.querySelector('.child');
child.parentElement.style.color = 'red';
  1. CSS-переменные:
    Родитель определяет переменные, которые может менять дочерний элемент:
.parent {
  --text-color: black;
  color: var(--text-color);
}
.child:hover {
  --text-color: red; /* изменит родителя */
}
  1. :has() (новый, но пока не везде поддерживается):
.parent:has(.child:hover) {
  color: red;
}

Лучший подход зависит от конкретной задачи и поддержки браузеров. Чаще всего используют JavaScript или пересматривают структуру стилей.