@zekin375

Как при наведении на элемент изменить стили его соседей?

<div class="block">
<div class="block_one">
     </div>
  <div class="block_one">
     </div>
  <div class="block_one">
     </div>
  <div class="block_one">
     </div>
  <div class="block_one">
     </div>
  <div class="block_one">
     </div>
</div>

Есть блоки с одинаковыми классами, стоит задача добавлять класс для всех блоков при наведении на один из них, на тот блок на который наводим, класс добавлять не надо.
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега CSS
const wrapper = document.querySelector('.block');
const blockSelector = '.block_one';
const activeClass = 'active';

wrapper.addEventListener('mouseover', onHover);
wrapper.addEventListener('mouseout', onHover);

function onHover({ type, target }) {
  const block = type === 'mouseover' && target.closest(blockSelector);
  this.querySelectorAll(blockSelector).forEach(n => {
    n.classList.toggle(activeClass, !!block && n !== block);
  });
}

UPD. Наконец-то дождались, теперь можно без js задачу решить:

.block:has(.block_one:hover) .block_one:not(:hover) {
  /* сюда переносим стили того класса, который через js добавлялся */
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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