単純な組積造グリッドがあります。ロードすると、.content
クラスが表示されます。 reloadすると、アイテムは互いに流れ込みます。
これはChromeとSafariでのみ発生し、Firefoxでは見栄えがします。
これがグリッドからのcssです:
#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;}
これは石積みがどのように呼ばれるかです:
$('#media_list').masonry({ // options
itemSelector : '.media_item',
columnWidth : 300
});
min-height
sとmargin
sで回避できますが、動的ではなく、あまりきれいに見えません。
これが JS Fiddle ですが、実際には問題を再現していません。
すでにリロードを使用しているようです。おそらく、画像はリロードではなくURLの更新時にリロードされるためです。
試してください:
var $container = $('#media_list');
$container.imagesLoaded(function(){
$container.masonry({
itemSelector : '.media_item',
columnWidth : 300,
gutterWidth: 20
});
});
さもないと
$('#media_list').masonry({
// options
itemSelector : '.media_item',
columnWidth : 300,
gutterWidth: 20
}).masonry('reload');
Googleとの互換性を高めるにはChromeたとえば、変更
var $container = $('#media_list');
に
$(window).load(function(){ $('#media_list').masonry(); });