2012-08-13 99 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個像素被關閉)的身體標籤。

羅德里戈。