У меня есть script, который динамически добавляет полные изображения над эскизами, когда вы наводите на них курсор. Я также дал полные изображения CSS: стиль наведения, чтобы они расширялись до большей ширины (где обычно они ограничены размерами миниатюры). Это работает отлично, если изображение загружается быстро или кэшируется, но если полное изображение занимает много времени, и вы не перемещаете мышь во время загрузки, то, как только он появляется, он обычно остается на ширине эскизов ( non: hover style), пока вы не переместите мышь снова. Я получаю это поведение во всех браузерах, в которых я его пробовал. Мне интересно, если это ошибка, и если есть способ исправить или обойти ее.
Возможно, стоит отметить, что я также попытался сделать то же самое в Javascript с помощью .on('mouseenter')
и столкнулся с той же проблемой.
Из-за характера проблемы его трудно воспроизвести, особенно если у вас быстрое соединение. Я выбрал довольно большую фотографию из Википедии, чтобы продемонстрировать, но чтобы она работала, вам, возможно, придется изменить ее на что-то особенно большое или из медленного домена. Также обратите внимание, что вам может понадобиться очистить кеш для последовательных попыток.
Если вы все еще не можете воспроизвести, вы можете добавить искусственную задержку к fullimage.load
перед вызовом anchor.show()
.
HTML:
<img id="image" src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/32/Cairo_International_Stadium.jpg/220px-Cairo_International_Stadium.jpg" />
CSS
.kiyuras-image {
position: absolute;
top: 8px;
left: 8px;
max-width: 220px;
}
.kiyuras-image:hover {
max-width: 400px;
}
JS:
$(function () {
var fullimageurl = 'http://upload.wikimedia.org/wikipedia/commons/3/32/Cairo_International_Stadium.jpg';
var fullimage = $('<img/>')
.addClass('kiyuras-image')
.load(function () {
anchor.show();
});
var anchor = $('<a/>').hide().append(fullimage);
$('body').prepend(anchor);
$("#image").on('mouseenter', function () {
fullimage.attr('src',fullimageurl);
$(this).off('mouseenter');
});
});
Обновлен JS Bin с добавленной задержкой на 1,5 секунды (надеюсь, сделает проблему более четкой)
Снова: Воспроизведение проблемы включает очистку кеша большого изображения, а затем зависание над исходным изображением для начальной загрузки большого изображения, а затем не перемещение мыши во время загрузки. Предполагаемое поведение заключается в том, что большое изображение должно правильно использовать псевдо-класс: hover, когда он в конечном итоге загружается. Проблема, которую я вижу, когда требуется загрузка более ~ 0,75 с для загрузки, заключается в том, что она не берет на себя: наведите курсор, пока вы немного не пошевелите мышью.
Изменить. См. мои комментарии по поводу ответа @LucaFagioli для получения дополнительной информации о моем случае использования.
Изменить, сиквел. Я думал, что уже сделал это, но я просто попытался воспроизвести проблему в Firefox, и я не мог. Возможно, это ошибка Chrome?