為何捐款
API 瀏覽器
Intersection Directive

“Intersection” 是 Quasar 指令,當使用者滾動且所套用的 DOM 元素(或元件)進入或離開視窗時,能夠呼叫一個方法。

在底層,它使用 Intersection Observer API

警告

並非所有瀏覽器都支援 Intersection Observer API。大多數現代瀏覽器都支援,但其他瀏覽器則否。如果您需要支援較舊的瀏覽器,您可以安裝並匯入(到啟動檔案中)官方 W3C polyfill

載入 Intersection API 中...

用法

先閱讀 Intersection Observer API 將有助於您理解此指令的運作方式。

Intersection 指令接受處理函式或物件作為參數。物件形式如下所示

{
  handler: /* Function */,
  cfg: {
    // any options from "Intersection observer options"
    // on https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API
    root: null, // DOM Element
    rootMargin: '0px',
    threshold: 0
  }
}

當使用物件形式時,只有 handler 鍵是必要的。

處理函式接受一個參數,即 IntersectionObserverEntry

提示

在下方範例中滾動,直到觀察的元素進入視窗。然後將其滾動出視窗。

基本

基本



觸發一次

此指令可以與 once 修飾符一起使用 (例如:v-intersection.once)。 一旦觀察的元素進入視窗,將會呼叫處理函式並停止觀察。 如果您只需要在觀察的元素開始在螢幕上可見時收到通知,這可讓您控制處理開銷。

一次



使用物件

透過傳遞物件作為指令的值 (而不是函式),您可以控制 Intersection Observer 的所有選項 (例如 threshold)。

提供配置物件



進階

以下是更進階的範例,展示您可以做什麼。 此程式碼利用了 HTML data 屬性。 基本上,透過在迴圈中將元素的索引設定為 data-id,可以透過傳遞到處理函式的 entry 作為 entry.target.dataset.id 檢索它。 如果您不熟悉 data 屬性,可以在此處閱讀更多關於如何使用它的資訊。

進階



在以下範例中,我們顯示多個卡片,但僅渲染可見的卡片。 秘密在於附加了 v-intersection 的包裝器以及固定的高度和寬度 (當內部內容未渲染時,它充當必要的填充物 – 以免滾動不穩定地跳動)。

下面的範例也可以使用 QIntersection 元件編寫,這使一切變得更加容易。

滾動卡片



提示

在上面的範例中,我們使用了 Quasar transition。 如需完整列表,請前往 Transitions 頁面。