就像我认为我在使砌体更具响应性方面取得进展一样......
我用这段代码打电话给Masonry:
jQuery(document).ready(function($) {
var CollManag = (function() {
var $ctCollContainer = $('#grid'),
collCnt = 1,
init = function() {
changeColCnt();
initEvents();
initPlugins();
},
changeColCnt = function() {
var w_w = $(window).width();
if( w_w <= 480 ) n = 1;
else if( w_w <= 700 ) n = 2;
else n = 3;
},
initEvents = function() {
$(window).on( 'smartresize.CollManag', function( event ) {
changeColCnt();
});
},
initPlugins = function() {
$ctCollContainer.imagesLoaded( function(){
$ctCollContainer.masonry({
itemSelector : '.box_item',
columnWidth : function( containerWidth ) {
return containerWidth / n;
},
isAnimated : true,
animationOptions: {
duration: 250
}
});
});
};
return { init: init };
})();
CollManag.init();
});
它根据视口宽度更改砌体列。
我已经剥离了我的HTML / CSS,所以我只是将一些图像包装在一个div(.box_item)中。这些div具有基于百分比的宽度(我知道浏览器使用%来解决问题)。
一切都运行良好,当我减少浏览器宽度时,我的网格相应地从3,2,1列变化。我对容器之间的间距(一切看起来都相同)特别满意。
如果我将浏览器的大小调整为700px,那么我们所有的排水沟都是相同的(由于浏览器会缩小我的尺寸,因此在最右侧略大)。如果我在此视口处刷新浏览器,则水槽会略微改变宽度。如果我将浏览器的大小调整为1px,我的网格间距会重置。
访问某些视口的人比我调整浏览器大小更重要:)任何想法可能导致此问题? 99%肯定它不是CSS相关的,因为我已经把所有东西都剥掉了。
更新:已使用以下内容替换原始脚本(问题仍然存在):
// load masonry / change layout based on view port
$(document).ready(function(){
var $container = $('#grid');
var gutter = 20;
var min_width = 230;
$container.imagesLoaded( function(){
$container.masonry({
itemSelector : '.box_item',
gutterWidth: gutter,
isAnimated: true,
columnWidth: function( containerWidth ) {
var box_width = (((containerWidth - 2*gutter)/3) | 0) ;
if (box_width < min_width) {
box_width = (((containerWidth - gutter)/2) | 0);
}
if (box_width < min_width) {
box_width = containerWidth;
}
$('.box_item').width(box_width);
return box_width;
}
});
});
});