Изменение размера кладки при изменении ориентации или изменении размера окна

Я использую masonry.desandro для создания макета кирпичной кладки для своего веб-сайта. Макет работает нормально, но после изменения размера окна он не обновляет ширину (пока я не перезагружу сайт с помощью F5). Как я могу изменить размер контейнера моего макета кладки после изменения ориентации или изменения размера окна (без обновления с помощью F5)?

Инициализируем макет кладки:

initMasonry() {
        this.masonry = new Masonry('.additive-post-container', {
          itemSelector: '.item',
          columnWidth: '.item',
          fitWidth: true,
          gutter: 20,
          transitionDuration: 0,
        });

      }

Я добавил EventListener, чтобы реагировать на изменение размера окна. Но кладка не обновляется, когда я вызываю masonry.layout () внутри функции.

reloadMasonry(){
  this.masonry.layout();
}


window.addEventListener('resize', this.reloadMasonry.bind(this));

Спасибо за вашу помощь !:)

.layout() - правильный метод, и с вашим приемником событий все в порядке. Ваша проблема в другом месте, мы не сможем помочь, пока вы не покажете нам еще какой-нибудь код. Если вы хотите попробовать отладить самостоятельно, установите точки останова в своем файле. (добавлен ли слушатель? запускает ли он функцию макета? можете ли вы войти в функцию макета? консоль пишет какие-либо ошибки? и т. д.)

caesay 17.04.2018 20:48

Когда размер контейнера изменяется, я вычисляю ширину .item и вызываю функцию reloadMasonry (). Вызывается функция reloadMasonry (), но она ничего не меняет ... когда я изменяю размер окна и нажимаю F5, макет кирпичной кладки имеет правильную ширину. Не понимаю, почему меняет ширину только если я нажимаю F5 ..

Jak111 17.04.2018 21:10
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
2
402
1

Ответы 1

Похоже, ваш EventListener не вызывает повторную отрисовку DOM. Принудительно повторять рендеринг нашего компонента каждый раз, когда окна браузера меняют размер. Благодаря этому вы вернете его в новом, скорректированном размере. Проверьте это, может быть, он вам пригодится

Другие вопросы по теме