2013-02-17 284 views
0

我第一次使用jQuery砌體。只是把我的頭撞在我的電腦上,它顯示了我的東西。jQuery砌體定位問題

我的jQuery如下:

$("#box-container").masonry({ 
    itemSelector: ".box", 
    columnWidth: 100 
}); 

CSS:

#content #left-content #box-container .box { 
    width:280px; 
    height:auto; 
    margin:18px 0 0 18px; 
    background:#fafafa; 
    position:relative; 
    min-width:230px; 
    float:left; 
} 

HTML,我認爲是沒有必要的。

問題:

我申請這一切的東西。包括jQuery砌體。一切都很好,但是當我刷新我的文檔。我所看到的?

所有div都在彼此之上。但我想可能會在控制檯中顯示錯誤,指出錯誤的類型。所以,我可以修復它。

當我點擊「檢查元素」時,我驚奇地發現所有div都按需設置。但爲什麼它不能在頁面加載? 我正在製作基本多欄佈局。是否有任何風格干擾?

+0

你能爲此創建一個jsFiddle嗎? – 2013-02-17 14:51:58

+0

只是等待,我想我可以:D – 2013-02-17 14:53:05

+0

@John我認爲,它的工作在小提琴中,但不是在我的文檔中。 http://jsfiddle.net/b8FyE/ – 2013-02-17 14:59:54

回答

0

我通過添加setTimeout函數得到它的工作。

setTimeout(function() { 
    $("#box-container").masonry({ 
     itemSelector: ".box", 
     columnWidth: 100 
    }); 
}, 1000); 
+0

我可以超過100的時間。 – 2014-07-10 13:30:06

1

一個setTimeout函數可能會在某些情況下工作,但最好的解決辦法是等待圖像加載調用砌體之前,這樣的:

$(window).load(function(){ 
    // Call Masonry here 
}); 

所以它會等待在窗口中的所有內容在計算每個項目的位置之前加載。 SetTimeout現在可能正常工作,但如果您的內容需要加載超過1個seconde,那麼您肯定會遇到同樣的問題。