@fuckingawesomenigga

Как установить зависимость элементов?

<div class="buttons">
	<button class="parent">...</button>
	<button class="parent">...</button>
	<button class="child">...</button>
	<button class="child">...</button>
	<button class="child">...</button>
	<button class="child">...</button>
	<button class="parent">...</button>
	<button class="child">...</button>
	<button class="child">...</button>
	<button class="child">...</button>
	<button class="parent">...</button>
</div>


Как при наведении на "parent" применить стиль ко всем элементам "child" которые ниже него, до следующего "parent"
  • Вопрос задан
  • 77 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега CSS
const itemSelector = '.parent';
const className = 'xxx';

document.querySelectorAll(itemSelector).forEach(n => {
  n.addEventListener('mouseenter', onHover);
  n.addEventListener('mouseleave', onHover);
});

function onHover() {
  for (
    let el = this;
    (el = el.nextElementSibling) && !el.matches(itemSelector);
    el.classList.toggle(className)
  ) ;
}

Если только через css - придётся дополнительно стилизовать элементы после следующего .parent, чтобы создать видимость, будто бы стили не применялись:

.parent:hover ~ .child {
  ...
}

.parent:hover ~ .parent ~ .child {
  ...
}
Ответ написан
Комментировать
Указать такую логику в CSS нельзя.
Можно либо выбрать либо один следующий элемент на том же уровне, либо все последующие.

Возможно, решением может быть добавление еще одного уровня элементов, оборачивающих группу кнопок

<div class="buttons">
    <div class="row">
        <button class="parent">...</button>
    </div>
    <div class="row">
        <button class="parent">...</button>
        <button class="child">...</button>
        <button class="child">...</button>
        <button class="child">...</button>
        <button class="child">...</button>
    </div>
    <div class="row">
        <button class="parent">...</button>
        <button class="child">...</button>
        <button class="child">...</button>
        <button class="child">...</button>
    </div>
    <div class="row">
        <button class="parent">...</button>
    </div>
</div>


Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Eridani
@Eridani
Мимо проходил
Установить каждой группе единый дата атрибут\идентификатор\класс
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы