画像のホバー効果を作成していますが、問題があります。特定の画像にカーソルを合わせると、回避したいスクロールバーが表示されますが、その方法がわかりません。ビューポートと計算に関係していると思いますが、それがどのように行われるかはわかりません。
コードは次のとおりです。
$('.simplehover').each(function(){
var $this = $(this);
var isrc = $this[0].src, dv = null;
$this.mouseenter(function(e){
dv = $('<div />')
.attr('class', '__shidivbox__')
.css({
display: 'none',
zIndex : 9999,
position: 'absolute',
top: e.pageY + 20,
left: e.pageX + 20
})
.html('<img alt="" src="' + isrc + '" />')
.appendTo(document.body);
dv.fadeIn('fast');
})
.mouseleave(function(){
dv.fadeOut('fast');
});
});
スクロールバーが表示されないような場所にホバーした画像が表示されるようにする方法を教えてください。(もちろん、画像サイズが非常に大きい場合、スクロールバーを避けることはできません)
スクロールバーをできるだけ避けながら、元の画像をズームで表示したいだけです。
これをjQueryプラグインに変換する予定であるため、プラグインのユーザーに強制的overflow
にhidden
. 解決策は、後でプラグインに組み込むことができるviewport、left、top、scroll widthとheight、ウィンドウの幅/高さのプロパティに関係しています。
アップデート:
私はこれを思いついた:
ただし、これは非常にハックであり、100% 完璧ではありません。より良いアルゴリズム/ソリューションを探しています。これを非常にうまく行う多くのホバープラグインを見てきましたが、私はこれが得意ではないので、完全にうまく行うことはできません. たとえば、Hover Zoom Chrome プラグインは、ホバーした画像をサイズに基づいて適切な場所に表示するという素晴らしい仕事をします。