我想让gutterWidth选项像columnWidth一样动态,因为我希望它与我正在使用的Wordpress网站的Twitter Bootstrap响应式布局一起使用。 布局使用20px或30px的装订线宽度,具体取决于窗口宽度。我使用以下内容增强了_getColumns函数:
_getColumns:function(){
var a=this.options.isFitWidth?this.element.parent():this.element,b=a.width();
/* begin hack: read gutterWidth from int or function */
this.options.gutterWidth=(typeof this.options.gutterWidth=="function")?
this.options.gutterWidth(b):this.options.gutterWidth;
/* end hack */
继承我的初始化功能:
$(function(){
init_masonry();
});
function init_masonry() {
var $posts = $('#posts');
$posts.imagesLoaded(function() {
$posts.masonry({
itemSelector : 'article.post',
isAnimated: true,
isResizable: true,
gutterWidth: function(containerWidth) {
var window_width = $(window).width();
var gutter = (window_width < 1200) ? 20 : 30;
return gutter;
},
columnWidth: function(containerWidth) {
var window_width = $(window).width();
var gutter = (window_width <= 1200) ? 20 : 30;
var box_width = (containerWidth - (3 * gutter)) / 4;
return box_width;
}
});
});
}
它似乎适用于页面的第一次加载。在我的13英寸笔记本电脑(窗口宽度> = 1200)上,它正确地使用30px的装订线。通过调整屏幕大小,该功能似乎不会更新为20px。
有人知道如何解决这个问题吗?
提前致谢, Moritz的
答案 0 :(得分:1)
我已经创建了一个拉取请求来添加将函数传递给gutterWidth选项的可能性,就像对于columnWidth一样。
https://github.com/desandro/masonry/pull/295
也许你可以尝试这个并在问题上发表一些反馈。
答案 1 :(得分:0)
将一个砌体(“重新加载”)添加到window.resize。