Intersect 插件
Alpine 的 Intersect 插件是 Intersection Observer 的便捷封装,让你能轻松地对元素进入视口做出反应。
安装
通过 CDN
<script defer src="https://cdn.jsdelivr.net/npm/@alpinejs/intersect@3.x.x/dist/cdn.min.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
通过 NPM
npm install @alpinejs/intersect
import Alpine from 'alpinejs'
import intersect from '@alpinejs/intersect'
Alpine.plugin(intersect)
x-intersect
主要 API 是 x-intersect。将其添加到 Alpine 组件内的任何元素中,当该元素进入视口时,提供的表达式将执行。
<div x-data="{ shown: false }" x-intersect="shown = true">
<div x-show="shown" x-transition>
I'm in the viewport!
</div>
</div>
x-intersect:enter
:enter 后缀是 x-intersect 的别名,工作方式相同:
<div x-intersect:enter="shown = true">...</div>
x-intersect:leave
追加 :leave 在元素离开视口时执行表达式:
<div x-intersect:leave="shown = true">...</div>
修饰符
.once
仅在元素第一次进入视口时求值表达式。
<div x-intersect.once="shown = true">...</div>
.half
当交叉阈值超过 0.5 时求值表达式。
<div x-intersect.half="shown = true">...</div>
.full
当交叉阈值超过 0.99 时求值表达式。
<div x-intersect.full="shown = true">...</div>
.threshold
控制底层 IntersectionObserver 的 threshold 属性,值范围 "0-100"。
<div x-intersect.threshold.50="shown = true">...</div>
.margin
控制底层 IntersectionObserver 的 rootMargin 属性。
<div x-intersect.margin.200px="loaded = true">...</div>
<div x-intersect:leave.margin.10%.25px.25.25px="loaded = false">...</div>
<div x-intersect.margin.-100px="visible = true">...</div>