Кратко
СкопированоСобытие scrollsnapchange
срабатывает в момент остановки прокрутки и выбора новой точки привязки.
Как пишется
СкопированоscrollContainer.addEventListener('scrollsnapchange', function(event) { console.log(event)})
scrollContainer.addEventListener('scrollsnapchange', function(event) { console.log(event) })
Как понять
СкопированоСобытие scrollsnapchange
возможно только на контейнерах с привязкой прокрутки. Сработает в момент, когда скролл остановился на новой точке привязки, причём до появления события scrollend
.
Событие содержит ссылки на элементы, к которым привязалась прокрутка:
snap
— в блочном направлении;Target Block snap
— в строчном направлении.Target Inline
scrollContainer.addEventListener('scrollsnapchange', function(event) { // Получаем элемент, к которому привязалась прокрутка в блочном направлении console.log(event.snapTargetBlock) // Получаем элемент, к которому привязалась прокрутка в строчном направлении console.log(event.snapTargetInline)})
scrollContainer.addEventListener('scrollsnapchange', function(event) { // Получаем элемент, к которому привязалась прокрутка в блочном направлении console.log(event.snapTargetBlock) // Получаем элемент, к которому привязалась прокрутка в строчном направлении console.log(event.snapTargetInline) })
Событие полезно, когда нужно получить информацию об элементе, на котором остановилась прокрутка. Попробуйте скроллить в демо ниже:
Подсказки
Скопировано💡 Событие не сработает, пока пользователь не отпустит палец или курсор. Если пользователь перестал скроллить, но продолжил зажимать элемент, значит прокрутка не завершилась. Нет завершения прокрутки, нет и события scrollsnapchange
.
💡 Событие не сработает, пока точка привязки не изменится. Если пользователь скроллил, но остановил прокрутку там же, где начал, то и scrollsnapchange
не появится.
- Chrome 129, поддерживается
- Edge 129, поддерживается
- Firefox, не поддерживается
- Safari, не поддерживается