1

gutterWidthオプションをcolumnWidthと同じくらい動的にしたいのは、作業中のWordpressサイトのTwitterBootstrapレスポンシブレイアウトで使用したいからです。レイアウトでは、ウィンドウ幅に応じて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 */

これが私のinit関数です:

$(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)では、30ピクセルのガターで正しく動作します。画面のサイズを変更すると、関数が20ピクセルに更新されないように見えます。

誰かがそれを修正する方法を知っていますか?

よろしくお願いします、モリッツ

4

2 に答える 2

1

columnWidth と同様に、関数を gutterWidth オプションに渡す可能性を追加するプル リクエストを作成しました。

https://github.com/desandro/masonry/pull/295

たぶん、これを試して、問題にフィードバックを投稿してください。

于 2013-02-05T10:39:05.840 に答える
0

window.resize に masonry("reload") を追加します。

于 2012-10-28T19:18:16.017 に答える