了解Javascript中的Intersection Observer API

只需幾行,您就可以大大改善用戶體驗。

我遇到了交叉觀察者API,同時學習了Gatsby如何預取鏈接,以提供極快的導航外觀。我推遲了幾個月的調查,但終於在上周末潛入了。

什麼是Intersection Observer API?

簡而言之,它使您能夠檢測元素的可見性,即它是否在當前視口中,以及兩個元素相對於彼此的相對可見性。

用例

  • 懶惰載入圖像
  • 無限成交量軸
  • 當鏈接出現在屏幕上時預取鏈接(蓋茨比這樣做)
  • 檢測廣告是否被查看(更多跟蹤?)
  • 確定用戶是否已閱讀文章,以及在何種程度上閱讀(認為媒體視圖v / s讀取統計數據)
  • 僅在屏幕上可見時才運行昂貴的渲染和動畫

技術的東西

像往常一樣,關於MDN的文檔很棒,但我在搞清楚一些事情時遇到了一些麻煩,所以我在這裡分享我的筆記。

Intersection Observer API的核心是以下兩行。 var observer = new IntersectionObserver(callback,options);
observer.observe(目標);

  1. 消防您創建一個帶有一些選項的觀察者。
  2. 然後你要求觀察者開始觀察目標。
  3. 當所需的交叉點發生時,將調用您的回調函數。

選項

這是理解的棘手部分。在完成選項中的設置之前,您應該牢牢掌握以下內容:

Intersection Observer API允許您在回調函數中觀察根元素和目標元素之間的交集(超過特定閾值)時執行某些操作。

  1. 將root視為外部矩形或要在其中觀察交叉點的矩形。
  2. target是您正在觀看的元素。
  3. 閾值給出了重疊發生的程度。
  4. rootMargin是在計算交叉範圍之前應用於根的邊距。

經驗法則

  1. API是非同步的,因此在交集發生時使用回調函數來執行某些操作。
  2. 可以使用CSS選擇器來決定根元素。
  3. 如果指定root:document.querySelector('null'),則用戶的當前視口將是根元素。
  4. 使用閾值和rootMargin來獲取您期望的確切行為。

這幾乎是Intersection Observer API的核心概念。有關進一步閱讀,請參閱MDN的文檔。

學習輸出

在學習這個API時,我想看看我是否可以創建一些有用的東西。所以我寫了幾行並創建了Chrome擴展程序。該擴展程序使用屏幕上可見的最新部分的ID更新URL。因此,當您與朋友分享更新的URL時,他們可以直接轉到您正在閱讀的部分。對於在不到一個小時內寫的一些行很酷,是嗎?

MicroContext
共享指向contentchrome.google.com特定部分的鏈接

完整代碼

此擴展的代碼長度少於30行。如果您想通過fork https://github.com/learning-paths-io/microcontext#js-flash-container接受它或者發送拉取請求。

如果您想要發表評論,該擴展程序也會在產品搜索中列出。

資訊來源:由0x資訊編譯自HACKERNOON。版權歸作者所有,原文鏈接:https://hackernoon.com/understanding-intersection-observer-api-in-javascript-bb1bf04b8081?source=collection_category—4——0———————。未經許可,不得轉載
提示:投資有風險,入市需謹慎,本資訊不作為投資理財建議。請理性投資,切實提高風險防範意識;如有發現的違法犯罪線索,可積極向有關部門舉報反映。
你可能還喜歡