基于屏幕的jquery中心元素,而不是页面大小

时间:2012-08-10 15:43:44

标签: javascript jquery zurb-foundation

我有一个使用Zurb的Reveal Plugin显示的元素,我对它如何定位模态窗口有疑问。

似乎将元素放置在页面的中心,在首页上方。但是,如果模式窗口由折叠下方的链接激活,则用户无法看到窗口。有没有办法根据当前的滚动位置而不是整个页面来居中元素?

据我所知,这是插件中的相关源代码:

变量集(ln 41):

var modal    = $(this),
topMeasure = parseInt(modal.css('top'), 10),                                                                                                
topOffset  = modal.height() + topMeasure,                                                                                                   
locked     = false,                                                                                                                         
modalBg    = $('.reveal-modal-bg'),                                                                                                         
closeButton;   

动画Div(ln 61)

 function openAnimation() {                                                                                                                    
    if (!locked) {                                                                                                                              
      lockModal();                                                                                                                              
      if (options.animation === "fadeAndPop") {                                                                                                 
        modal.css({                                                                                                                             
            'top': $(document).scrollTop() - topOffset,                                                                                         
            'opacity': 0,                                                                                                                       
            'visibility': 'visible'                                                                                                             
        });                                                                                                                                     
        modalBg.fadeIn(options.animationSpeed / 2);                                                                                             
        modal.delay(options.animationSpeed / 2).animate({                                                                                       
          "top": $(document).scrollTop() + topMeasure + 'px',                                                                                   
          "opacity": 1                                                                                                                          
        }, options.animationSpeed, function () {                                                                                                
          modal.trigger('reveal:opened');                                                                                                       
        });                                                                                                                                     

      }   
      //etc...

Full Source Code From GitHub

5 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,我意识到我正在使用href链接中带有“#”的标签调用reveal函数。

在调用揭幕功能之前调用此页面重新加载页面,因此当显示按钮被按下时,显示模式的屏幕位置跳转到屏幕的坐标,导致模态屏幕显示在屏幕的一半。

从链接中删除此“#”将问题排除在外......

希望有帮助...

答案 1 :(得分:1)

确保您的模式位于页面主要部分之外,而不是在行或列内部,这些行或列将是不正确的相对父级。

答案 2 :(得分:1)

我尝试了其余的答案,结果是:

 .reveal-modal{
    position: fixed; 
 }

似乎工作得很好,仍然按照我的意愿动画和行为。

答案 3 :(得分:0)

你的div是否在行/列div块中的模态本身?

示例:

<div class="row">
  <div class="twelve columns">
    <div id="featured"><a href="" data-reveal-id="viewModal">View My Modal</a></div>
    <div id="viewModal" class="reveal-modal large">My Modal</div>
  </div>
</div>

如果是这种情况,您所描述的行为可能会发生。

来自documentation

  

请记住:您的模式应位于页面的末尾,位于任何行或列之后。

以下代码可以正常运行:

<div class="row">
  <div class="twelve columns">
    <div id="featured"><a href="" data-reveal-id="viewModal">View My Modal</a></div>
  </div>
</div>

<div id="viewModal" class="reveal-modal large">My Modal</div>

答案 4 :(得分:0)

我写了一个简单的脚本,它在页面加载时触发并查找所有显示模态,然后将它们移动到标记之前的空目标div。通过这种方式,我可以将所有模态保留在我想要的位置,以便进行标记分离,或者让其他人更容易遵循/继续工作。

相关问题