Dom7 — это легковесная JavaScript-библиотека, ориентированная на удобную работу с DOM, часто используемая вместе со Swiper, но также полностью самостоятельная. Одной из её сильных сторон является работа с анимациями и эффектами скрытия/показа элементов, в том числе slide-эффектов.
Slide-эффекты позволяют элементам «скользить» вверх,
вниз или по горизонтали при показе или скрытии, создавая плавную
визуальную динамику без использования CSS-анимаций напрямую. В Dom7 они
реализуются через сочетание манипуляций с style.height,
style.width, style.display и
CSS-переходами.
В Dom7 реализованы три основных метода для работы с slide-эффектами:
slideUp(duration, callback): скрывает элемент, сжимая
его по вертикали до нуля.slideDown(duration, callback): показывает скрытый
элемент, раздвигая его до естественной высоты.slideToggle(duration, callback): переключает состояние
видимости элемента, выбирая между slideUp и slideDown.Параметры:
duration — время анимации в миллисекундах. Если не
указано, используется стандартное значение 400 мс.callback — функция, вызываемая после завершения
анимации.Измерение исходной высоты элемента При
slideDown сначала вычисляется естественная высота элемента
(scrollHeight), чтобы анимация могла развернуться
корректно.
Установка стилей через JavaScript Dom7 добавляет inline-стили:
height — для анимации размера;overflow — устанавливается в hidden для
предотвращения «выпадания» содержимого;transition — управляет скоростью и плавностью
анимации.Изменение размеров и показ элемента
slideDown height увеличивается от 0 до
естественной;slideUp — уменьшается от текущей высоты до 0, после
чего элемент скрывается (display: none).Очистка стилей после анимации Для предотвращения
накопления inline-стилей Dom7 сбрасывает height,
overflow и transition после завершения
эффекта.
Скрытие элемента с плавным эффектом:
const el = Dom7('.menu');
el.slideUp(500, function() {
console.log('Меню скрыто');
});
Показ элемента с раздвижением:
const el = Dom7('.menu');
el.slideDown(500);
Переключение видимости с анимацией:
const el = Dom7('.menu');
el.slideToggle(400);
Продолжительность анимации задается через первый параметр методов
slide. Малое значение (100–200 мс) делает эффект быстрым и почти
мгновенным, большие значения (600–1000 мс) создают медленное, плавное
раскрытие. Плавность также можно улучшить настройкой CSS-свойства
transition-timing-function для элемента:
Dom7('.menu').css('transition-timing-function', 'ease-in-out');
Dom7 поддерживает выборку нескольких элементов. Методы slide автоматически применяются ко всем выбранным элементам:
Dom7('.accordion-item').slideUp(300);
Каждый элемент анимируется независимо, при этом callback выполняется для каждого элемента отдельно.
Slide-эффекты чувствительны к исходным стилям элементов:
display: block
или flex), иначе slideDown может работать
некорректно.height: 100px), иначе slide-эффект не сможет правильно
измерить конечное значение.Для элементов с переменной высотой рекомендуется использовать
height: auto в CSS и доверять Dom7 динамическому
измерению.
width вместо стандартного height..active,
.open) для управления стилями.Dom7 допускает последовательное использование slide с fade или scale эффектами. Для этого применяются цепочки методов и callback-функции:
Dom7('.menu')
.slideDown(400)
.fadeIn(400, function() {
console.log('Элемент появился с slide и fade');
});
Такой подход позволяет создавать сложные UI-анимации без сторонних библиотек.
Slide-эффекты в Dom7 обеспечивают мощный инструмент для создания интерактивных интерфейсов с плавной анимацией, минимизируя ручное управление стилями и переходами. Они подходят для аккордеонов, раскрывающихся меню, табов и любых элементов, где требуется визуальное раскрытие или скрытие контента.