Javascript 如何获取scrollbale窗口视口的相对尺寸

Javascript 如何获取scrollbale窗口视口的相对尺寸,javascript,jquery,Javascript,Jquery,我有一个通过e.pageX e.pageY定位的工具提示(放大图像视图),我试图确保它没有隐藏在当前滚动的视图端口下面 我看到很多网站都有这个 我的代码是这样的,但我遗漏了一些东西 var positionImg = function(e) { var viewportWidth = $(window).width(); var viewportHeight = window.innerHeight ? window.innerHeight : $(window).height

我有一个通过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});
};
var positionImg=函数(e){
var viewportWidth=$(窗口).width();
var viewportHeight=window.innerHeight?window.innerHeight:$(window.height();
var mouseAtY=e.pageY;
var mouseAtX=e.pageX;
var maxBottomVPos=视口高度-“我不知道”;
var maxTopVPos=30;
if(mouseAtY>=maxBottomVPos)
{
tPosX=mouseAtX+10;
tPosY=mouseAtY-520;
}
否则,如果(鼠食)
var maxBottomVPos=viewportHeight-“我不知道”

你可能不想低于你所定位的元素的高度。因此,使用“代码”> ZooMeals的高度来计算它需要走多高。这样,整个事情就可以被包括进去。当然,你必须考虑到用户可能缩小屏幕太小而不能适应容器。

要获得滚动偏移,请使用。使用此选项,您将获得视口的大小和视口向下的距离。

我找到了答案:

很简单: var位置img=功能(e){ cntnrH=$zoomContainer.height()+230; calHight=e.pageY-$(窗口).scrollTop()+cntnrH; DOC=$(窗口).height()

var mouseAtY=e.pageY;
var mouseAtX=e.pageX;
如果(计算高度>=docH)
{
tPosX=mouseAtX+5;
tPosY=鼠标-cntnrH;
}

else if(calHight)您是对的,但我的问题是“当主体滚动时,如何获取屏幕的当前vewport”查看图像您已经具有视口高度。我想我知道您的意思,您需要滚动偏移吗?要获取滚动偏移,请使用scrollTop在我的情况下,公式是什么?你最后的“else”永远不会执行,因为
        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);
});