Свойство transitionDuration в
библиотеке Masonry определяет длительность анимации при изменении
положения элементов сетки. Masonry применяет анимацию к элементам, когда
они перемещаются на новые позиции после добавления, удаления или
фильтрации элементов. Управление transitionDuration
позволяет задавать плавность визуальных изменений и контролировать
скорость переходов.
transitionDuration принимает значения в формате
CSS-свойства transition-duration. Это может быть:
"0.4s",
"400ms".400 — в миллисекундах
(эквивалент "400ms").Пример установки при инициализации Masonry:
const grid = document.querySelector('.grid');
const msnry = new Masonry(grid, {
itemSelector: '.grid-item',
columnWidth: 200,
gutter: 10,
transitionDuration: '0.6s'
});
В этом примере все элементы сетки будут перемещаться с анимацией длительностью 600 миллисекунд при перестроении.
transitionDuration можно изменять после инициализации
Masonry, обновляя параметры анимации в зависимости от условий:
msnry.options.transitionDuration = '0.2s';
msnry.layout(); // Применение нового времени анимации
Такой подход полезен при адаптивной верстке или при необходимости ускорить анимацию на мобильных устройствах.
transitionDuration к вновь
добавленным элементам, если вызывается метод
appended().remove() элементы плавно исчезают с анимацией
длительностью, заданной transitionDuration.transform (translate3d) для
перемещения элементов, что обеспечивает GPU-ускорение анимации..grid-item {
transition-property: transform;
transition-timing-function: ease;
}
Эта настройка CSS совместно с transitionDuration
позволяет добиться максимально плавного эффекта перемещения.
0 и отключение анимацииДля мгновенного изменения положения элементов без анимации можно
установить transitionDuration в "0s" или
0:
msnry.options.transitionDuration = 0;
msnry.layout();
Это полезно при загрузке страницы или при обновлении сетки с большим количеством элементов, когда анимация может замедлять рендеринг.
layout: Любое перестроение сетки
использует текущую длительность анимации.percentPosition: В комбинации с
процентными размерами элементов, анимация с
transitionDuration обеспечивает плавное масштабирование и
перемещение.gutter и columnWidth:
Изменение этих параметров автоматически запускает анимацию с
установленной длительностью.const filters = document.querySelectorAll('.filter-button');
filters.forEach(btn => {
btn.addEventListener('click', () => {
const category = btn.dataset.category;
const items = document.querySelectorAll('.grid-item');
items.forEach(item => {
item.style.display = item.dataset.category === category ? 'block' : 'none';
});
msnry.layout();
});
});
Установка transitionDuration: '0.5s' обеспечит плавное
перемещение оставшихся элементов при фильтрации.
if(window.innerWidth < 768) {
msnry.options.transitionDuration = '0.2s';
} else {
msnry.options.transitionDuration = '0.6s';
}
msnry.layout();
На мобильных устройствах анимация ускоряется, чтобы не задерживать интерфейс, а на десктопе остаётся плавной.
transition-timing-function
для достижения нужного визуального эффекта (ease, linear,
cubic-bezier).transitionDuration является ключевым инструментом для
настройки визуальной динамики сетки Masonry и позволяет гибко управлять
скоростью перемещения элементов при любых изменениях.