2012-02-10 59 views
0

我遇到了一个bug,我的模态不会在中心窗口打开。目前我使用的测量中的代码如下:为什么我的模式不能在窗口的死中心打开?

var id = j('#share-modal'); 

// show modal, resize 
j(id).css('top', j(window).height()/2-j(id).height()/2);     
j(id).css('left', j(window).width()/2-j(id).width()/2); 

j('#share-modal').fadeIn(500); 


CSS 

#share-modal { 
    display: none; 
    font-family: Arial, sans-serif; 
    width: 537px; 
    height: 510px; 
    position: absolute; 
    background: #FFF; 
    z-index: 100; 
    box-shadow: 3px 3px 3px #333; 
    -moz-border-radius: 15px; 
    -webkit-border-radius: 15px; 
} 

这是我把那是应该居中代码的唯一的代码,但我可以不知道是否有其他干扰。

查看我的JavaScript这里: http://pastebin.com/wZeY5azT

你可以在这里查看:www.paultibbs.com/varier

向下滚动,并点击 “与好友分享” 按钮。

如果有人能帮我解决这个bug,我将不胜感激!

+0

首先为什么j的,而不是作为惯例是比较常见的$? ;-)它实际上**是**在窗口的死亡中心**(如果你一直向上滚动页面,你会明白我的意思)。你真正想要的是实际上文档当前显示区域的中心。因此,使用相对于点击事件或按钮位置的y轴位置。 – 2012-02-10 02:33:02

+0

@UstamanSangat如何投票现有答案,而不是仅仅重复6分钟前所说的话? – thenetimp 2012-02-10 02:34:51

+0

在这种特殊情况下,您不必担心它,但请记住,如果您的模态框中有边框,边距或填充,您必须在定位时补偿它们,或使用“框尺寸:边界框;'。 – 2012-02-10 02:37:31

回答

1

您需要考虑滚动位置。

// Add the pageYOffset should fix the problem 
j(id).css('top', (j(window).height()/2-j(id).height()/2) + window.pageYOffset); 

您还必须在滚动事件中保持监视并在滚动上下滚动时重新生成位置。

+0

问题解决了!谢谢! – user1201058 2012-02-10 03:15:59

+0

很好,因为你是Stackoverflow的新手,当有人给你正确的答案时,你接受它,它给你的声望,也给了他们声望。 – thenetimp 2012-02-10 08:12:38

相关问题