Intersect
Плагин Intersect представляет собой удобную обёртку для Intersection Observer, которая позволяет легко реагировать на попадание элемента в область просмотра.
Это полезно для: отложенной загрузки изображений и другого контента, запуска анимации, бесконечной прокрутки, регистрации «просмотров» контента и т. д.
Установка
Вы можете использовать этот плагин, включив его из тега <script>
или установив с помощью менеджера пакетов.
Через CDN
Вы можете подключить CDN-сборку этого плагина с помощью тега <script>
, только подключать нужно ДО основного JS-файла Alpine.
Через менеджер пакетов
Вы можете установить Intersect для использования внутри вашей сборки следующим образом:
Затем инициализируйте его в своей сборке:
x-intersect
Основным API для использования этого плагина является x-intersect
. Вы можете добавить x-intersect
к любому элементу в компоненте Alpine, и когда этот компонент попадет в область просмотра (будет прокручен), будет выполнено указанное выражение.
Например, в следующем фрагменте shown
будет оставаться false
до тех пор, пока элемент не будет прокручен в поле зрения. В этот момент выражение будет выполнено, и shown
станет true
:
x-intersect:enter
Суффикс :enter
является псевдонимом x-intersect
и работает аналогичным образом:
Для наглядности можно использовать суффикс :leave
.
x-intersect:leave
Добавление :leave
запускает ваше выражение, когда элемент покидает область просмотра:
По умолчанию это означает, что весь элемент не находится в области просмотра. Используйте
x-intersect:leave.full
, чтобы запустить выражение, когда только часть элемента не находится в области просмотра.
Модификаторы
.once
Иногда полезно вычислять выражение только в первый раз, когда элемент попадает в область просмотра, а не в последующие разы. Например, при запуске анимации ввода («enter»). В этих случаях для достижения этой цели вы можете добавить модификатор .once
к x-intersect
.
.half
Оценивает выражение, когда порог пересечения превышает 0.5
.
Применяется для элементов, где важно показать хотя бы часть элемента.
.full
Оценивает выражение, когда порог пересечения превышает 0.99
.
Применяется для элементов, где важно показать весь элемент целиком.
.threshold
Позволяет управлять свойством threshold
базового IntersectionObserver
:
Это значение должно находиться в диапазоне «0-100». Значение «0» означает: вызвать пересечение, если ЛЮБАЯ часть элемента попадает в область просмотра (поведение по умолчанию). В то время как значение «100» означает: не вызывать пересечение, если только весь элемент не вошел в область просмотра.
Любое значение между ними представляет собой процент от этих двух крайних значений.
Например, если необходимо вызвать пересечение после того, как половина элемента вошла на страницу, можно использовать .threshold.50
:
Если бы требовалось срабатывать только тогда, когда 5% элемента попадает в область просмотра, то можно было бы использовать: .threshold.05
, и так далее, и так далее.
.margin
Позволяет управлять свойством rootMargin
нижележащего IntersectionObserver
.
Это позволяет эффективно изменять размер границы области просмотра. Положительные значения
расширяют границу за пределы области просмотра, а отрицательные значения сужают её вглубь. Значения
работают подобно CSS margin: одно значение для всех сторон; два значения для top/bottom
, left/right
; или
четыре значения для top
, right
, bottom
, left
. Вы можете использовать значения px
и %
, или использовать голое число для получения значения в пикселях.
Проверка знаний
-
В каких случаях лучше использовать
x-intersect:enter
? -
Какой модификатор применяют в случаях, когда нужно показать весь элемент целиком?