Waypoints — это библиотека JavaScript, предназначенная для отслеживания положения элементов на странице относительно видимой области браузера. Она позволяет выполнять действия, когда элемент появляется, исчезает или достигает определённого положения на экране. В контексте автовоспроизведения видео Waypoints особенно полезен для запуска воспроизведения или паузы видео в момент, когда пользователь прокручивает страницу до нужного блока.
Waypoints работает на основе scroll events, вычисляя положение элементов относительно верхней границы окна браузера. Основная единица работы — Waypoint, который привязан к конкретному DOM-элементу и вызывается при пересечении определённой позиции.
Для того чтобы видео воспроизводилось автоматически при появлении на экране, создаётся waypoint с привязкой к видеоэлементу:
var videoElement = document.querySelector('#myVideo');
var waypoint = new Waypoint({
element: videoElement,
handler: function(direction) {
if (direction === 'down') {
videoElement.play();
} else {
videoElement.pause();
}
},
offset: '50%' // Триггер срабатывает, когда середина видео достигает середины окна
});
Ключевые моменты:
element — DOM-элемент, к которому привязывается
waypoint.handler — функция, которая вызывается при пересечении
точки отслеживания. Параметр direction указывает
направление прокрутки (down или up).offset — смещение триггера относительно верхней границы
окна. Может быть указано в пикселях или процентах.Использование offset: '50%' гарантирует, что видео
начнёт воспроизводиться только тогда, когда его середина видна
пользователю.
Для полноценного автоплей видео важно не только запускать воспроизведение, но и останавливать его, когда видео покидает видимую область. Для этого создаются дополнительные Waypoints:
var pauseWaypointTop = new Waypoint({
element: videoElement,
handler: function(direction) {
if (direction === 'up') {
videoElement.pause();
}
},
offset: '0%' // Верх видео пересёк верх окна
});
var pauseWaypointBottom = new Waypoint({
element: videoElement,
handler: function(direction) {
if (direction === 'down') {
videoElement.pause();
}
},
offset: '100%' // Нижняя граница видео пересёк нижнюю границу окна
});
Вывод: комбинация нескольких waypoint’ов позволяет контролировать воспроизведение видео в зависимости от того, где на странице находится пользователь.
Waypoints поддерживает тонкую настройку offset, что важно для точного автовоспроизведения. Например:
offset: '75%' — триггер срабатывает, когда 75% элемента
видны.offset: -50 — срабатывает за 50 пикселей до достижения
верхней границы окна.offset: function() { return window.innerHeight / 2; } —
можно вычислять динамическое смещение на основе размеров окна.Использование функций для offset позволяет адаптировать
автовоспроизведение под разные устройства и размеры экрана.
Если на странице несколько видео, для каждого создаётся собственный waypoint или используется массив:
var videos = document.querySelectorAll('.autoplay-video');
videos.forEach(function(video) {
new Waypoint({
element: video,
handler: function(direction) {
if (direction === 'down') {
video.play();
} else {
video.pause();
}
},
offset: '50%'
});
});
При такой реализации каждое видео будет запускаться и останавливаться независимо, что улучшает пользовательский опыт на длинных страницах.
throttle или debounce.var waypoint = new Waypoint({
element: videoElement,
handler: function(direction) {
videoElement.play();
this.destroy(); // удаляет waypoint
},
offset: '50%'
});
continuous: false
предотвращает повторное срабатывание waypoint при небольших колебаниях
прокрутки.Waypoints можно комбинировать с современным API
Intersection Observer, чтобы получить более плавное и
точное воспроизведение видео, особенно на мобильных устройствах с
высокими частотами обновления:
var observer = new IntersectionObserver(function(entries) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
entry.target.play();
} else {
entry.target.pause();
}
});
}, { threshold: 0.5 });
videos.forEach(function(video) {
observer.observe(video);
});
Waypoints остаются полезными для более сложных сценариев, где необходимо учитывать направление прокрутки или триггерные точки с кастомными смещениями.
offset с динамическими вычислениями высоты экрана.Эти подходы позволяют создавать страницы с динамическим автовоспроизведением видео, полностью управляемым прокруткой, без лишних библиотек и сложной логики. Waypoints обеспечивает точный контроль над моментом запуска и остановки медиаконтента, что делает его незаменимым инструментом для интерактивных лендингов и образовательных платформ.