【问题标题】:jQuery: How to check if an element exceeds the browser window's size, and how to reposition itjQuery:如何检查元素是否超过浏览器窗口的大小,以及如何重新定位它
【发布时间】:2011-09-18 05:33:58
【问题描述】:

我有这个代码:

var pos = $(this).offset();
var width = $(this).width();

userPreviewCon.css({
     left: (pos.left + 30) + 'px',
     top: (pos.top + 15) + 'px'
}).fadeIn();

...用于相对于鼠标指向的元素定位弹出窗口。

但是当一个元素靠近窗口的边框时,一些工具提示是不可见的,因为它的一部分超出了窗口大小。问题是:如何重新定位工具提示以不再超出窗口的边框?

【问题讨论】:

    标签: jquery popup window positioning


    【解决方案1】:

    要获得窗口的宽度,您可以这样做

    $(window).width();
    

    然后检查一下这是否离你想的太远了(从你发布的内容来看,做这个评估

    (pos.left + 30) > $(window).width();
    

    最后,如果这个评估是真的,你可以做以下事情

    pos.left -= pos.left + 30 - $(window).width();
    

    这应该使您的工具提示框弹出,使其右边缘位于窗口的右边缘。

    【讨论】:

      【解决方案2】:

      使用Math.max()Math.min() 选择所提供变量的较高/较低值,如下所示:

      var pos = $(this).offset();
              var width = $(this).width();
              userPreviewCon.css({
                  left: Math.min((Math.max(0,pos.left + 30)+$(this).width(),$(window).width()) + 'px',
                  top: Math.min(Math.max(0,pos.top + 15)+$(this).height(),$(window).height()) + 'px'
              }).fadeIn();
      

      因此,如果计算的值为> 0,则0 是较高的值,如果它试图超出左侧的边界,则将被选中。同样,如果x+width>window.width(),右侧将使用较低的值,即window.width()

      【讨论】:

        猜你喜欢
        • 2014-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-02
        • 2015-02-15
        • 2016-05-08
        • 2012-02-11
        • 1970-01-01
        相关资源
        最近更新 更多