Я использую Masonry для макета. Когда размер окна браузера изменяется, я хотел бы выполнить некоторые вычисления, прежде чем Masonry переделает макет.
До сих пор я мог сделать это, изменив файл jquery.masonry.js и добавив функцию обратного вызова в параметры. Но я бы предпочел сделать это без изменения кода кладки.
Добавлена следующая опция (masonry init):
$container.masonry({
itemSelector : '.grid-element'
, preResizeCallback : doPreResize
, isResizable : true
});
а затем в doPreResize
делаю все, что мне нужно. Модификация в файле .js находится в функции resize
(около строки 293 в версии v2.0.110927):
resize : function() {
//added callback to be called before doing resizing-related code
if (this.options.preResizeCallback)
{
this.options.preResizeCallback(this.element);
}
//rest of code
Что я хотел бы сделать, так это инициализировать Masonry с параметром isResizable
, установленным на false
, а затем инициировать изменение размера в полуручном режиме, сохраняя при этом событие интеллектуального изменения размера.
Можно ли настроить событие «умное изменение размера» для вызова такой функции, как resizeLayout
?
function resizeLayout(event) {
//do precalculations
//tell masonry to reorganize layout
$container.masonry();
}
Чего мне не хватает, так это того, как настроить событие изменения размера так, чтобы оно не запускалось постоянно, а вместо этого выполнялось так же, как Masonry, когда isResizable
равно true
.