Dom7 — это легковесная библиотека для работы с DOM, используемая в основном в экосистеме Framework7. Она предоставляет удобный синтаксис для выборки элементов, управления событиями и анимациями, включая реализацию плавной прокрутки страницы или отдельных блоков.
Выбор элементов осуществляется с помощью функции $,
которая аналогична document.querySelectorAll. Можно
использовать селекторы по тегу, классу, идентификатору или
комбинированные селекторы:
var content = $('.content'); // выбор по классу
var header = $('#header'); // выбор по ID
var paragraphs = $('p'); // выбор по тегу
Dom7 возвращает объект, напоминающий массив, с набором методов для манипуляции и анимации элементов.
Для реализации прокрутки Dom7 использует метод scrollTo,
который позволяет плавно перемещать контейнер к определённой позиции.
Поддерживаются горизонтальная и вертикальная прокрутка.
Синтаксис:
$(container).scrollTo(position, duration, easing, callback);
Параметры:
position — целевая позиция в пикселях (число) или
элемент Dom7.duration — время анимации в миллисекундах.easing — функция сглаживания, например
'linear' или 'ease-in-out'.callback — функция, вызываемая после завершения
анимации.Пример вертикальной прокрутки:
$('.content').scrollTo(500, 800, 'ease-in-out', function() {
console.log('Прокрутка завершена');
});
Пример прокрутки к элементу:
var target = $('#target-element');
$('.content').scrollTo(target, 1000, 'linear');
Dom7 позволяет интегрировать анимированную прокрутку с событиями,
такими как click или touchstart, для создания
интерактивных интерфейсов.
$('.scroll-button').on('click', function () {
var target = $('#section-2');
$('.content').scrollTo(target, 600, 'ease-in-out');
});
События можно добавлять на любой набор элементов, Dom7 поддерживает делегирование, что полезно при динамически создаваемых блоках.
Библиотека поддерживает несколько стандартных типов easing, а также возможность передачи кастомной функции:
function customEasing(t, b, c, d) {
t /= d / 2;
if (t < 1) return c / 2 * t * t + b;
t--;
return -c / 2 * (t * (t - 2) - 1) + b;
}
$('.content').scrollTo(400, 1000, customEasing);
customEasing получает параметры: текущую позицию времени
t, начальное значение b, изменение значения
c и продолжительность d.
Метод scrollTop() возвращает текущее смещение по
вертикали и позволяет задавать его вручную. Это удобно для синхронизации
анимаций с прокруткой:
var scrollPosition = $('.content').scrollTop();
$('.content').scrollTop(scrollPosition + 200);
Использование callback-функции позволяет выполнять действия после завершения прокрутки, например запуск анимаций других элементов или загрузку контента:
$('.content').scrollTo('#footer', 1200, 'ease-in-out', function() {
$('#footer').addClass('highlight');
});
Dom7 позволяет комбинировать прокрутку с методами для манипуляции классами, атрибутами и CSS:
$('.content').scrollTo(600, 800, 'linear').addClass('scrolled');
Такой подход обеспечивает цепочку действий, улучшая читаемость и поддерживаемость кода.
Метод scrollTo поддерживает прокрутку по горизонтали
через установку параметра scrollLeft:
$('.slider').scrollTo(300, 500, 'ease-in-out'); // горизонтальная прокрутка
Для точной работы с горизонтальной прокруткой важно убедиться, что
контейнер имеет CSS-свойство overflow-x: scroll или
auto.
Dom7 интегрируется с Framework7, что позволяет использовать встроенные анимации и навигацию. Например, при переключении страниц прокрутка может быть плавной и синхронизированной с переходами:
app.views.main.router.navigate('/about/', {
animate: true,
transition: 'f7-slide'
});
Dom7 предоставляет низкоуровневые инструменты для кастомных анимаций прокрутки на всех элементах интерфейса, что делает его универсальным решением для интерактивных веб-приложений.