2011-08-31 40 views
12

Tôi có lưới xây đơn giản. Khi nó tải lớp .content hiển thị. Khi bạn tải lại các mục sẽ chuyển vào nhau.Vấn đề chiều cao Jquery Masonry

Điều này chỉ xảy ra trong Chrome và Safari, trong Firefox có vẻ tốt.

Đây là css từ lưới:

#media_list {} 
#media_list .media_item { height: auto; width: 270px; display: inline-block; background: #f4f4f4; border: 1px solid #d9d7d5; float: left; padding: 10px 0px 10px 0px; font: 11px Helvetica Neue; } 
#media_list .media_item .date { color: white; background: #2f343a; padding: 10px 5px; width: 260px; float: left; margin: 0px 0px 15px 0px;} 
#media_list .media_item .content { padding: 15px; float: left; display: inline-block; margin-bottom: 20px; } 
#media_list .media_item img { border: 1px solid #dedddd; margin: 0px 0px 10px 10px; width: 248px;} 

Đây là cách nề được gọi là:

$('#media_list').masonry({ // options 
          itemSelector : '.media_item', 
          columnWidth : 300 
         }); 

tôi có thể làm việc xung quanh nó với min-height s và margin s nhưng đó không phải năng động và doesn trông rất sạch sẽ.

Đây là a JS Fiddle nhưng không thực sự tái tạo sự cố.

+2

nếu tôi chạy $ ('# media_list'). Xây ('tải lại'); trong bảng điều khiển, nó giải quyết vấn đề. không chắc chắn làm thế nào để làm cho điều này xảy ra mỗi khi nó tải mặc dù – papacostas

+0

Tôi không hoàn toàn hiểu được vấn đề: (Nó làm gì sai? Và bạn luôn có thể mở rộng nề với tải lại như bạn đã nói: p –

+1

tôi cũng có hai điều. nó trông khác khi bạn truy cập nó trực tiếp từ url vs khi bạn nhấn tải lại. 2) whats một sự kiện jquery tốt để sử dụng để thực hiện $ ('# media_list'). Xây ('tải lại'); chỉ huy? – papacostas

Trả lời

34

Dường như bạn đã sử dụng tải lại. Có thể vì hình ảnh tải lại khi làm mới URL và không tải lại.

Hãy thử:

var $container = $('#media_list'); 
$container.imagesLoaded(function(){ 
    $container.masonry({ 
     itemSelector : '.media_item', 
     columnWidth : 300, 
     gutterWidth: 20 
    }); 
}); 

khác

$('#media_list').masonry({ 
    // options 
    itemSelector : '.media_item', 
    columnWidth : 300, 
    gutterWidth: 20 
}).masonry('reload'); 
+3

Tôi không biết plugin plugin được tải xuống - cảm ơn vì điều đó! Thông tin thêm về plugin ở đây: http://metafizzy.co/blog/imagesloaded-plugin/ –

7

Đối với một khả năng tương thích tốt hơn với Google Chrome ví dụ, thay đổi

var $container = $('#media_list'); 

để

$(window).load(function(){ $('#media_list').masonry(); }); 
+0

điều này dường như có ý nghĩa tốt hơn nếu bạn có quá nhiều tải JS. Bố cục của tôi sẽ trở nên sôi nổi với nó trên doc.ready ... vì vậy cảm ơn vì giải pháp –

+0

Điều này làm việc cho tôi. Cần thiết này với sự kết hợp của imagesLoaded(). – Nate

Các vấn đề liên quan