【问题标题】:How do i get relative dimensions of scrollbale window viewport我如何获得可滚动窗口视口的相对尺寸
【发布时间】:2009-07-08 13:04:48
【问题描述】:

我有一个通过 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});
};

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    var maxBottomVPos = viewportHeight-"i dont know";

    您可能不想低于您要定位的元素的高度。所以使用zoomContainer 的高度来计算它需要走多高。这样,整个事情就可以包括在内。当然,您必须考虑到用户可能会将屏幕缩小到无法容纳容器的程度。

    要获得滚动偏移,请使用scrollTop。有了这个,您将获得视口的大小以及视口向下的距离。

    【讨论】:

    • 你是对的,但我的问题是“当身体滚动时我如何获得屏幕的当前vewport”查看图片img.skitch.com/20090708-njwmg2fmrx23w6m8yau5axmn95.png
    • 你已经有了视口高度。我想我知道你的意思,你需要滚动的偏移量吗?
    • "要获得滚动偏移,请使用 scrollTop。"在我的情况下,公式是什么?
    【解决方案2】:

    我找到了答案:

    很简单: var positionImg = 函数(e){ cntnrH = $zoomContainer.height() + 230; calHight = e.pageY - $(window).scrollTop() + cntnrH; docH = $(window).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);
    });
    

    【讨论】:

    • 你最终的 'else' 将永远不会被执行,因为 '(calHight
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 2011-02-12
    • 2021-07-26
    • 2012-05-15
    • 2019-06-01
    相关资源
    最近更新 更多