2009-07-08 18 views
0

e.pageX e.pageY経由で配置されているツールチップ(大きな画像ビュー)を持っていますが、現在のスクロール表示の下に隠れていないことを確認しようとしていますポート。スクロールベールウィンドウビューポートの相対寸法を取得する方法

多くのサイトにはこれがあります。 私のコードはこのようなものですが、何か不足しています。

var positionImg = function(e) { 
    var viewportWidth = $(window).width(); 
    var viewportHeight = window.innerHeight ? window.innerHeight : $(window).height(); 
    var mouseAtY = e.pageY; 
    var mouseAtX = e.pageX; 
    var maxBottomVPos = viewportHeight-"i dont know"; 
    var maxTopVPos = 30; 

    if (mouseAtY >= maxBottomVPos) 
    { 
     tPosX = mouseAtX+ 10; 
     tPosY = mouseAtY -520; 
    } 
    else if (mouseAtY <= maxTopVPos) 
    { 
     tPosX = mouseAtX; 
     tPosY = mouseAtY +40; 
    } 
    else 
    { 
     tPosX = mouseAtX; 
     tPosY = mouseAtY +20; 
    } 
    $zoomContainer.css({top: tPosY, left: tPosX}); 
}; 

答えて

1

var maxBottomVPos = viewportHeight-"i dont know";

あなたはおそらく、あなたが位置決めされている要素の高さよりも低くいかなる行きたくありません。どのくらい高くする必要があるのか​​把握するには、高さはzoomContainerです。このようにして、すべてを含めることができます。もちろん、ユーザーが画面を小さくしすぎてコンテナに収まらない可能性があると考える必要があります。

スクロールオフセットを取得するには、scrollTopを使用します。これにより、ビューポートのサイズとビューポートの距離の両方が得られます。

+0

を= .skitch.com/20090708-njwmg2fmrx23w6m8yau5axmn95.png – adardesign

+0

あなたは既にビューポートの高さを持っています。私はあなたが何を意味するか知っていると思う、あなたはスクロールオフセットが必要ですか? – geowa4

+0

"スクロールオフセットを取得するにはscrollTopを使用してください。"私の場合は何が式になるのでしょうか? – adardesign

0

私は答えた:230 + するvar positionImg =機能(E){ cntnrH = $ zoomContainer.height();:

非常に簡単 calHight = e.pageY - $(ウィンドウ).scrollTop()+ cntnrH; // IMG: DOCHは、あなたが正しいですが、私の質問は ビュー画像をhttp「体がスクロールされたときに、私は、画面の現在のvewportを得るのですか」である$(ウィンドウ).height()

 var mouseAtY = e.pageY; 
     var mouseAtX = e.pageX; 

     if (calHight >= docH) 
     { 
     tPosX = mouseAtX + 5; 
     tPosY = mouseAtY - cntnrH; 
     } 
else if (calHight <= calHight){ 
      tPosX = mouseAtX; 
     tPosY = mouseAtY + 15; 
     } 
     else 
     { 
     tPosX = mouseAtX; 
     tPosY = mouseAtY +20; 
     } 
     $zoomContainer.css({top: tPosY, left: tPosX}); 
     }; 
    doIt = $("img.hovelble"); 
    doIt.hover(showZoomImg, hideZoomImg).mousemove(positionImg); 
}); 
+1

'(calHight <= calHight)'が常にtrueになるため、最後の 'else'は実行されません。 –

+0

あなたは正しいです、私はこの部分を調整しました。とにかくありがとう。 – adardesign

関連する問題