DANFA

Задержка перед появлением элемента

Здравствуйте.

Есть невидимый блок, с краткой информацией, который появляется при наведении на другой блок, так сказать, всплывающая подсказка. Но появляется она сразу, и это мешает. Допустим, курсор хотят навести на один блок, и ведя до него, стрелочкой проводят по соседнему блоку, что находится на пути, тут появляется подсказка и перекрывает нужный блок.

.information {
	display: none;
}

.branch:hover .information {
	display: block;
}

Чтобы не было таких неприятностей, надо сделать задержку появления всплывающей подсказки. Можно на JavaScript, лучше на чистом CSS. Хотя, без разницы, как.

Поможете реализовать?

Спасибо.
Попробуйте на чистом CSS:
.information {
	opacity: 0;
	visibility: hidden;

	transition-property: opacity, visibility;
	transition-duration: 1s;
	transition-delay: 1s;
}

.branch:hover .information {
	opacity: 1;
	visibility: visible;
}

В свойствах transition-duration и transition-delay меняйте время нужное Вам, в секундах:
  • transition-duration: Продолжительность появления.
  • transition-delay: Задержка перед появлением.
Работает. Спасибо!
Но, когда уводишь курсор с блока, всплывающая информация, еще какое-то время висит, а надо, чтобы исчезала сразу.
Пробуйте:
.information {
	opacity: 0;
	visibility: hidden;

	transition-property: opacity, visibility;
	transition-duration: .1s;
	transition-delay: .1s;
}

.branch:hover .information {
	opacity: 1;
	visibility: visible;

	transition-property: opacity, visibility;
	transition-duration: 1s;
	transition-delay: 1s;
}

Опять же, настраивайте время, которое необходимо Вам.
Большое спасибо! Лучше и не бывает!
Такой вариант:
CSS:
.information {
	display: none;
}

JavaScript:
var branch = document.querySelector('.branch');

branch.addEventListener('mouseover', function() {
	setTimeout(function() {
		document.querySelector('.information').style.display = 'block';
	}, 1000);
});

Конечно, сыровато, конечно, надо доработать.
Max JS сказал:
Конечно, сыровато, конечно, надо доработать.

Очень сыровато:
  1. Работает только для первого элемента, для остальных не работает.
  2. После того, как курсор уйдет с элемента, подсказка не исчезает, остается до перезагрузки страницы.
Как то так:
var branch = document.querySelectorAll('.branch');

for (var i = 0; branch.length > i; i++) {
	branch[i].addEventListener('mouseover', function() {
		this.querySelector('.information').style.display = 'block';
	});

	branch[i].addEventListener('mouseout', function() {
		this.querySelector('.information').style.display = 'none';
	});
};

Надо допиливать, а я не силен. Могу только приблизительно сделать.
Пробую строку:
		this.querySelector('.information').style.display = 'block';

обвернуть в setTimeout, чтобы была задержка, но не хочет работать.