2013-02-17 159 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,那么您肯定会遇到同样的问题。