レイアウトには石積みを使用しています。ブラウザのウィンドウのサイズが変更されたら、Masonryがレイアウトをやり直す前に、いくつかの計算を実行したいと思います。
これまで、jquery.masonry.jsファイルを変更し、オプションにコールバック関数を追加することでこれを行うことができました。しかし、石積みのコードを変更せずにそれを実行したいと思います。
追加されたオプションは次のとおりです(石積みの初期化):
$container.masonry({
itemSelector : '.grid-element'
, preResizeCallback : doPreResize
, isResizable : true
});
そして、doPreResize
私がしなければならないことは何でもします。.jsファイルの変更は、次のresize
関数に含まれています(バージョンv2.0.110927の293行目付近)。
resize : function() {
//added callback to be called before doing resizing-related code
if (this.options.preResizeCallback)
{
this.options.preResizeCallback(this.element);
}
//rest of code
私がやりたいのは、isResizable
オプションをに設定してMasonryを初期化false
し、スマートサイズ変更イベントを維持しながら、半手動でサイズ変更をトリガーすることです。
「smartresize」イベントを設定して、次のような関数を呼び出すことはできresizeLayout
ますか?
function resizeLayout(event) {
//do precalculations
//tell masonry to reorganize layout
$container.masonry();
}
私が見逃しているのは、サイズ変更イベントが常にトリガーされないように設定する方法ですが、代わりに、がである場合にMasonryが行うのと同じ方法で実行されisResizable
ますtrue
。