弹道放置取决于可用空间。

时间:2013-07-29 07:28:12

标签: javascript css iframe fancybox-2

请查看附件图片。

如你所见,我正在展示一个弹出窗口。基本上我想根据可用空间(左或右)更改弹出窗口的位置。现在它超出了图像范围。

它是一个奇特的盒子(iframe)

popover image

使用此代码显示弹出窗口。

  // Position and show the message.
        this.message
            .css({
                left: (tPosition.left + "px"),
                top: ((tPosition.top + t.outerHeight()) + "px")
            })
            .show();

1 个答案:

答案 0 :(得分:1)

我会做这样的事情:

this.message
     .css({
          left : function () {
               if ( tPosition.left + $(this).width() >= $(this).parent().width() ) {
                   return $(this).parent().width() - $(this).width();
               } 
               else {
                    return tposition.left;
               } 
          },
          top : function () {
            if ( tPosition.top + $(this).height() > $(this).parent().height() ) {
                   return $(this).parent().height() - $(this).height();
               } 
               else {
                    return tposition.top;
               } 
          }
      });

基本上,您需要检查弹出窗口是否会超出您的包含框边界,然后再显示它并进行适当调整。在横轴上,这就像确保鼠标位置x +弹出窗口的宽度不大于父容器的宽度一样简单。在垂直轴上,您要确保鼠标位置y +弹出高度不大于父容器高度。