Я полагаю, что это можно сделать в следующих шагах:
- Измените CSS, чтобы скрытые элементы («всплывающие» изображения) не устанавливали свои стили
display
при наведении курсора. Это должно быть достаточно просто, вероятно, в CSS не так уж много спецификаций display
.
- Создайте еще один класс CSS, который обрабатывает свойство
display
(устанавливает его на block
, я думаю).
- Используя JavaScript, добавьте обработчик к событию
mouseover
для миниатюрных элементов. В этом случае установите задержку, а затем примените новый класс CSS к целевому элементу. (Не забудьте удалить этот класс на mouseout
.
Я мог бы, вероятно, немного повозиться с этим, чтобы получить какое-то подтверждение концепции, если вам нужно. Хотя это будет довольно примитивно. Несколько возможных зависаний могут включать в себя:
- Будет ли
mouseover
применяться, когда под курсором отображается другой элемент? Если нет, будет ли mouseout
поднят или эти элементы останутся открытыми после открытия?
- Выбор правильного элемента в каждом случае может оказаться сложным. Если нам придется много разбираться со структурой HTML или идентификаторами / стилями элементов, тогда может потребоваться дополнительная работа по обновлению существующего CSS для соответствия.
Это интересная идея, поэтому я буду рад уделить 1028 * внимания прототипу. Но, надеюсь, просто набросок того, что может быть вовлечено, достаточен, чтобы вы начали:)
Редактировать: Хорошо, меня больше интересовало это, чем я думал. У меня есть прототип здесь . Эффект наведения мыши теперь обрабатывается jQuery, а не чистым CSS. Единственное, что я еще не добавил, - это задержка. Я смотрю на это .
Пока что я изменил только добавление JavaScript и удаление свойства display
из .hoverbox a:hover .preview
в CSS. Вот и все.
В интересах потомков в StackOverflow (и поскольку я никогда полностью не доверяю jsfiddle сохранять вещи), вот код JavaScript:
$(document).ready(function() {
$('.hoverbox a').mouseover(function() {
$(this).children('.preview').show();
});
$('.hoverbox a').mouseout(function() {
$(this).children('.preview').hide();
});
});