Javascript Popover的位置取决于可用空间。

Javascript Popover的位置取决于可用空间。,javascript,css,iframe,fancybox-2,Javascript,Css,Iframe,Fancybox 2,请看附件中的图片 正如你所看到的,我正在展示一件府绸。基本上,我想根据可用空间(左或右)来更改popover的位置。现在它超出了图像的范围 这是一个奇特的盒子(iframe) 使用此代码显示popover // Position and show the message. this.message .css({ left: (tPosition.left + "px"), top: ((

请看附件中的图片

正如你所看到的,我正在展示一件府绸。基本上,我想根据可用空间(左或右)来更改popover的位置。现在它超出了图像的范围

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

使用此代码显示popover

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

我会这样做:

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+弹出高度不大于父容器高度。

对于确切位置仍有一些问题,需要进行一些修改,但您的答案似乎有效,因此现在我将给出+1的答案。什么不起作用?如果您将边距应用于弹出元素,那么这将导致混乱。改用jQuery的outerHeight/Width()函数。