跳到主要内容

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

控制底层 IntersectionObserverthreshold 属性,值范围 "0-100"。

<div x-intersect.threshold.50="shown = true">...</div>

.margin

控制底层 IntersectionObserverrootMargin 属性。

<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>