@MRcracker

Как сделать чтобы блок не пропадал при наведении?

Есть два блока. Один скрыт и появляется при наведении на другой. Подскажите, что нужно сделать, чтобы при наведении на первый блок появлялся второй, при наведении на второй блок он не пропадал, а продолжал быть в состоянии block и скрывался только тогда, когда убираешь мышку с него или с первого блока
<div class="div1"></div>
<div class="div2"></div>


.div1 {
  width: 200px;
  height: 50px;
  background: red;
}
.div2 {
  display: none;
  width: 200px;
  height: 50px;
  background: green;
}


let div1 = document.querySelector('.div1');
let div2 = document.querySelector('.div2');

div1.addEventListener('mouseenter', e => {
  div2.style.display = 'block';
})

div1.addEventListener('mouseleave', e => {
  div2.style.display = 'none';
})
  • Вопрос задан
  • 394 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Вам тут не нужен js:

.div1:hover + .div2,
.div2:hover {
  display: block;
}

Конечно, если вы не наврали про взаимное расположение блоков. Можно прятать элемент по таймауту, чтобы у пользователя было время переместить курсор с одного элемента на другой:

.show {
  display: block;
}

let timeout = null;

function onEnter() {
  clearTimeout(timeout);
  div2.classList.add('show');
}

function onLeave() {
  timeout = setTimeout(() => div2.classList.remove('show'), 300);
}

div1.addEventListener('mouseenter', onEnter);
div2.addEventListener('mouseenter', onEnter);

div1.addEventListener('mouseleave', onLeave);
div2.addEventListener('mouseleave', onLeave);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы