這篇文章帶給大家的內容是關於IntersectionObserver是什麼? IntersectionObserver的介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
讓你追蹤目標元素與其祖先元素或視窗的交叉狀態。此外,儘管只有一部分元素出現在視窗中,即使只有一像素,也可以選擇觸發回呼函數。
IntersectionObserver 為什麼需要它 ?
在我們需要監聽目標元素是否進入視口時,需要監聽scroll事件,大量的計算會造成效能問題
IntersectionObserver 怎麼解決這個問題?
IntersectionObserver API 是異步的,不隨著目標元素的滾動同步觸發。即只有執行緒空閒下來,才會執行觀察器。這意味著,這個觀察器的優先順序非常低,只在其他任務執行完,瀏覽器有了空閒才會執行。
IntersectionObserverEntry 物件
new IntersectionObserver(callback, options)
let observer = new IntersectionObserver((e) => { let isintersecting = e[0].isIntersecting console.log(e[0].intersectionRatio) if (isintersecting) { console.log('我出来了'); }else{ console.log('我隐藏了'); } }, { root: null }) // 观察某个目标元素,一个观察者实例可以观察任意多个目标元素。 observer.observe(document.querySelector('.scroll-down'))
IntersectionObserverEntry物件提供目標元素的信息,一共有六個屬性。
{time:可見性改變的時間,是一個高精度時間戳,單位為毫秒
target:被觀察的目標元素,是一個DOM 節點物件
rootBounds:根元素的矩形區域的訊息,getBoundingClientRect()方法的傳回值,如果沒有根元素(即直接相對於視窗滾動),則傳回null
boundingClientRect:目標元素的矩形區域的資訊
intersectionRect:目標元素與視窗(或根元素)的交叉區域的資訊
intersectionRatio:目標元素的可見比例,即intersectionRect佔boundingClientRect的比例,完全可見時為1,完全不可見時小於等於0
}
options 主要有
{ root: null, // 指定与目标元素相交的根元素,默认null为视口 threshold: [] // [0, 0.5, 1] 当目标元素和根元素相交的面积占目标元素面积的百分比到达或跨过某些指定的临界值时就会触发回调函数 Magin:‘’ // "100px 0" 与margin类型写法,指定与跟元素相交时的延时加载 }
實例方法
observe()
觀察某個目標元素,一個觀察者實例可以觀察任意多個目標元素。注意,這裡可能有同學會問:能不能 delegate?能不能只呼叫一次 observe 方法就能觀察一個頁面裡的所有 img 元素,甚至是那些未產生的?答案是不能,這不是事件,沒有冒泡。
unobserve()
取消對某個目標元素的觀察,延遲載入通常都是一次性的,observe 的回呼裡應該直接呼叫unobserve() 那個元素.
disconnect()
取消觀察所有已觀察的目標元素
takeRecords()
#理解這個方法需要講點底層的東西:在瀏覽器內部,當觀察者實例在某一時刻觀察到了若干個相交動作時,它不會立即執行回調,它會呼叫window.requestIdleCallback() (目前只有Chrome 支援)來異步的執行我們指定的回調函數,而且還規定了最大的延遲時間是100 毫秒,相當於瀏覽器會執行:
requestIdleCallback(() => { if (entries.length > 0) { callback(entries, observer) } }, { timeout: 100 })#
以上是IntersectionObserver是什麼? IntersectionObserver的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

記事本++7.3.1
好用且免費的程式碼編輯器

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境