2012-08-13 63 views
4

好吧,所以我正在尝试制作水平网站,但是当我尝试获取导航的offsetWidth时,它会返回远高于真实宽度的值。有问题的设计可以找到here。该页面的CSS是here和JS hereoffsetWidth返回不正确的值

非常感谢任何人谁可以工作了这一点:)

+0

你可以做一些console.log-ing,看看页面加载的值是什么?因为我加载了你的页面,并且看到这个框太宽,但是如果我在页面加载后运行该功能,它可以正常工作。另外,在pnW变量的末尾添加一个+40(以考虑边距) – 2012-08-13 04:29:39

+3

您的链接已损坏 – GarethOwen 2013-06-17 11:33:36

回答

2

这是你的页面看起来像只是一瞬间应用CSS之前: http://img571.imageshack.us/img571/1047/shotjt.png。那时候#projects nav的宽度就是客户端屏幕的宽度。

有两种解决方法:

  1. 指定#projects的宽度资产净值样式属性
  2. 添加一些超时到init JS功能:domready中(函数(){setTimeout的( “initPageFunction()”, 200);}

出人意料的是,它在IE :)

+0

谢谢:)最后,我使用了窗口加载事件而不是domready – 2012-08-13 13:52:07

0

这是因为通过利润创造的空间计算好,并有一个右边距最后一个rticle。这是固定的脚本。

domready(function() { 

    var projectsContainer = qwery('#projects')[0]; 
    var projects = qwery('.project'); 
    var projectsNav = qwery('#projects nav')[0]; 

    var pMargin = 40; 
    var pnW = projectsNav.offsetWidth+cMargin; 

    for(p in projects) { 
     projects[p].style.marginRight = pMargin+'px'; 
    } 

    projectsContainer.style.width = (projects.length*(projects[0].offsetWidth+pMargin))+pnW+'px'; 

}); 
1

另一种解决方案是设置体余量为0的时候,通常没有宽度设置与主体余量是不变,渲染可以通过占8个像素到每个侧(左和右的16个像素被关闭)的身体标签。

罗德里戈。