2009-07-08 61 views
0

我有一個工具提示(大圖像視圖),通過e.pageX e.pageY定位,我試圖確保它不隱藏在當前滾動視圖的下方港口。我如何獲得scrollbale窗口視口的相對尺寸

我見過很多網站都有這個 我的代碼是這樣的,但我錯過了一些東西。

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

你是正確的,但我的問題是:「我如何得到屏幕的當前vewport當人體滾動」 視角圖像的http:// IMG .skitch.com/20090708-njwmg2fmrx23w6m8yau5axmn95.png – adardesign 2009-07-08 13:39:59

+0

您已擁有視口高度。我想我知道你的意思,你需要滾動抵消? – geowa4 2009-07-08 14:38:59

0

我找到答案:

非常簡單: VAR positionImg =函數(e)中{ cntnrH = $ zoomContainer.height()+ 230; calhight = e.pageY - $(window).scrollTop()+ cntnrH; DOCH = $(窗口).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); 
});