动态设置弹出div的位置

时间:2014-07-10 14:55:24

标签: javascript jquery html css

我正在寻找一个关于如何设置弹出div的位置的解决方案,通过点击另一个div来显示它,但它的位置取决于窗口的位置。

这里有一些我的div的例子:

 <div id="header"></div>

 <div id="open">Click here to open the popup</div>

 <div id="popup">
      <div class="popup-wrapper">
          <div class="content">
             <h1>TEST</h1>
          </div>
      </div>
 </div>

 <div id="footer"></div>

例如:

  1. 如果用户点击#open div以显示#popup div与底部浏览器窗口滚动条的位置,我希望{{1} } div显示在#popup div的顶部。

  2. 但是,如果用户点击了#open;#open&#39; div显示#open div与浏览器窗口的位置在顶部,我希望#popup div显示在#popup div的底部。

  3. 以下是我使用的脚本:

    #open

    以下是css FIDDLE

    的完整代码

4 个答案:

答案 0 :(得分:2)

检查用户的滚动条位置。然后根据滚动条的位置显示弹出窗口。 Haven没有测试下面的代码,但是类似于此。

var scrollTop = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;

if(scrollTop == 0){
   // Window on top. Display popup
}

if(scrollTop == $(window).height()){
   // Window on bottom. Display popup
} 

答案 1 :(得分:1)

这是一个更动态的工作解决方案。它会查找具有'popupSection'类的任何元素,并在其上打开弹出窗口。

$('.popupSection').on('click',function(e){
    var target = $(e.target);
    var targetOffset = target.offset().top;
    var scrollPosition = $(window).scrollTop();
    if ( scrollPosition <= targetOffset ) {
        openPopup(targetOffset);
    } else {
        var targetHeight = target.height();
        var contentHeight = $('#popup .content').outerHeight();
        var targetBottomOffset = targetOffset + targetHeight - contentHeight;
        openPopup(targetBottomOffset);
    }    
});

var openPopup = function(offset){
    var popup = $('#popup');
    var popupContent = $('#popup .content');
    if ( popup.css('display') === 'none' ) {
        popup.css('display','block');
    }
    popupContent.css('top',offset);    
}

$("#popup").click(function(e) {    
    $("#popup").fadeOut(200);
});

工作小提琴:http://jsfiddle.net/epbdZ/2/

答案 2 :(得分:0)

你可以得到#34;#open&#34;单击div时,使用event.offsetX和event.offsetY进行div位置,然后可以为弹出窗口计算新坐标。

答案 3 :(得分:-3)

执行此操作的一种方法不是通过灯箱div,但我可以使用具有翻转功能和镜像功能的下拉式自动位置,如下所述:https://github.com/twbs/bootstrap/issues/10756#issuecomment-41041800