サムネイルにカーソルを合わせると、完全な画像をサムネイルに動的に追加するスクリプトがあります。また、完全な画像に CSS :hover スタイルを与えて、より大きな幅に拡大できるようにしました (通常、画像はサムネイルのサイズに制限されます)。これは、画像がすばやく読み込まれるか、キャッシュされている場合はうまく機能しますが、完全な画像の読み込みに時間がかかり、読み込み中にマウスを動かさない場合、通常はサムネイルの幅のままになります ( non-:hover スタイル) は、マウスをもう一度動かすまで続きます。試したすべてのブラウザーでこの動作が発生します。これがバグなのか、修正または回避する方法があるのか 疑問に思っています。
.on('mouseenter')
を使用して Javascript で同じことをしようとして、同じ問題に遭遇したことは注目に値するかもしれません。
問題の性質上、特に接続が高速な場合は、再現が難しい場合があります。デモ用にウィキペディアから大きな写真を選びましたが、それを機能させるには、特に大きな写真や遅いドメインの写真に変更する必要があるかもしれません。また、連続して再試行するためにキャッシュをクリアする必要がある場合があることに注意してください。
それでも再現できない場合は、 を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 秒以上かかる場合に表示される問題は、マウスを少し揺らすまで :hover にならないことです。
編集: 私のユースケースの詳細については、@LucaFagioli の回答に関する私のコメントを参照してください。
編集、続編:私はすでにこれをやったと思っていましたが、Firefoxで問題を再現しようとしましたが、できませんでした. おそらくこれはChromeのバグですか?