Элемент: событие scrollsnapchanging
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.
Экспериментально: Это экспериментальная технология
Внимательно ознакомьтесь с таблицей совместимости браузеров таблицей совместимости перед использованием в продуктовой среде.
Событие scrollsnapchanging интерфейса Element срабатывает в контейнере прокрутки, когда браузер определяет, что новый целевой элемент для прокрутки с привязкой установлен, т.е. он будет выбран по завершении текущего жеста прокрутки.
Конкретно, это событие срабатывает во время жеста прокрутки каждый раз, когда пользователь перемещается над потенциальными новыми целевыми элементами прокрутки с привязкой. Например, пользователь может медленно прокручивать, перетаскивая палец по сенсорному экрану, или удерживая нажатой кнопку мыши на полосе прокрутки и перемещая мышь. scrollsnapchanging может поэтому срабатывать несколько раз для каждого жеста прокрутки.
Однако, оно не срабатывает для всех потенциальных целевых элементов прокрутки с привязкой во время жеста прокрутки, который перемещается над несколькими целевыми элементами. Вместо этого, оно срабатывает только для последнего целевого элемента, на котором прокрутка с привязкой потенциально остановится.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или установите свойство обработчика событий.
addEventListener("scrollsnapchanging", (event) => {});
onscrollsnapchanging = (event) => {};
Тип события
Примеры
Базовое использование
Предположим, у нас есть элемент <main>, содержащий значительное содержимое, которое вызывает прокрутку:
<main> <!-- Significant content --> </main>
Элемент <main> может быть преобразован в контейнер прокрутки, который привязывается к своим дочерним элементам при прокрутке с помощью комбинации свойства CSS scroll-snap-type и других свойств. Например:
main {
width: 250px;
height: 450px;
overflow: scroll;
scroll-snap-type: block mandatory;
}
Следующий фрагмент JavaScript заставит событие scrollsnapchanging сработать в элементе <main>, когда один из его дочерних элементов станет потенциальной целью привязки. В функции обработчика мы устанавливаем класс pending для дочернего элемента, на который ссылается свойство snapTargetBlock, что можно использовать для стилизации его по-другому при срабатывании события.
scrollingElem.addEventListener("scrollsnapchanging", (event) => {
// remove previously-set "pending" classes
const pendingElems = document.querySelectorAll(".pending");
pendingElems.forEach((elem) => {
elem.classList.remove("pending");
});
// Set current pending snap target class to "pending"
event.snapTargetBlock.classList.add("pending");
});
В начале функции мы выбираем все элементы, к которым ранее был применен класс pending и удаляем его, чтобы стилизировался только самый последний потенциальный целевой элемент привязки.
Спецификации
| Спецификация |
|---|
| CSS Scroll Snap Модуль 2 уровня # scrollsnapchanging |
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
scrollsnapchanging_event |
129 | 129 | Нет | 115 | Нет | 129 | Нет | 86 | Нет | Нет | 129 |
См. также
-
scrollsnapchangeсобытие -
scrollendсобытие SnapEvent- CSS
scroll-snap-typeсвойство - CSS модуль прокрутки с привязкой
- Использование событий прокрутки с привязкой
- События прокрутки с привязкой на developer.chrome.com (2024)
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollsnapchanging_event