最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

IntersectionObserver判斷是否在可視區(qū)域詳解

 更新時間:2022年10月11日 14:03:31   作者:紅浴巾  
這篇文章主要為大家介紹了IntersectionObserver判斷是否在可視區(qū)域詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

在日常的開發(fā)過程中,有時候會有一些要求判斷節(jié)點是否進入可視化區(qū)域的需求。例如:判斷信息是否在可視區(qū)域曝光再進行曝光,圖片懶加載等。通常我們可以通過scroll和getBoundingclient來進行判斷。

el.offsetTop - document.documentElement.scrollTop <= 視口高度
// 或
el.getBoundingClientRect().top <= 視口高度

但是scroll,getBoundingclient會引起回流,計算過于頻繁可能會引起很大的性能問題,例如用戶在使用的過程中,滑動卡頓啊等。那么有沒有更好的辦法來代替判斷是否進入可視化區(qū)域呢?使用IntersectionObserver即可解決這種煩惱。

概念

Intersection Observer API 提供了一種異步檢測目標元素與祖先元素或 viewport 相交情況變化的方法。瀏覽器顯示頁面的時候,首先會用js處理邏輯,然后進行樣式計算及布局,在內存里面形成之后會畫我們的屏幕上去,這一個過程就叫1幀,如果1幀中任一個階段占用的時間過長,就會影響到我們的平均幀率,導致掉幀等。而IntersectionObserver會在瀏覽器空閑的時候,也就是幀空閑的時候才去執(zhí)行,不會一直占用我們的主線程,從而提高了性能及體驗。

使用

IntersectionObserver接收2個參數callback和options。具體可見MDN

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box1 {
            width: 500px;
            height: 500px;
            border: 1px salmon solid;
            overflow-y: scroll;
        }
        .box2 {
            width: 100px;
            height: 1000px;
            background: red;
        }
        .box3 {
            width: 100px;
            height: 100px;
            background: blue;
        }
    </style>
</head>
<body>
    <div class="box1">
        <div class="box2"></div>
        <div class="box3" id="box3"></div>
    </div>
    <script>
        let options = {
            root: document.querySelector('#box1'),
            rootMargin: '0px',
            threshold: 1.0
        }
        let callback = (entries, observer) => {
            entries.forEach(entry => {
                // entry.boundingClientRect
                // 目標元素的區(qū)域信息,getBoundingClientRect()的返回值
                // entry.intersectionRatio
                // 目標元素的可見比例
                // entry.intersectionRect
                // 目標元素與根元素交叉的區(qū)域信息
                // entry.isIntersecting
                // 目標元素是否進入根元素區(qū)域
                // entry.rootBounds
                // 根元素的矩形區(qū)域信息
                // entry.target
                // 被觀察dom節(jié)點
                // entry.time
                // 相交發(fā)生時距離頁面打開時的毫秒數
            });
        };
        let observer = new IntersectionObserver(callback, options);
        let target = document.querySelector('#box3');
        observer.observe(target);
    </script>
</body>
</html>

瀏覽器兼容性

不兼容Safari 12.1以下和Firefox for Android 55以下,具體可以看MDN。 可以使用polyfill版解決該問題。

注意

當target元素已在root可視范圍,但是被其他元素遮蓋住了,該target是否被其他元素遮蓋不可判斷。

以上就是IntersectionObserver判斷是否在可視區(qū)域詳解的詳細內容,更多關于IntersectionObserver 判斷可視區(qū)域的資料請關注腳本之家其它相關文章!

相關文章

  • JavaScript檢查數字是否為整數或浮點數的方法

    JavaScript檢查數字是否為整數或浮點數的方法

    這篇文章主要介紹了JavaScript檢查數字是否為整數或浮點數的方法,涉及javascript類型判斷的相關技巧,需要的朋友可以參考下
    2015-06-06
  • JavaScript數組分組groupBy示例詳解

    JavaScript數組分組groupBy示例詳解

    JavaScript?最近發(fā)布了一個方法?Object.groupBy,可以對可迭代對象中的元素進行分組,這篇文章主要介紹了JavaScript數組分組groupBy示例,需要的朋友可以參考下
    2023-12-12
  • Javascript 判斷兩個IP是否在同一網段實例代碼

    Javascript 判斷兩個IP是否在同一網段實例代碼

    javascript功能的強大之處是我們大家有目共睹的,幾天小編向大家介紹Javascript 判斷兩個IP是否在同一網段,感興趣的朋友可以參考一下
    2016-11-11
  • javascript原生ajax寫法分享

    javascript原生ajax寫法分享

    本文通過2個示例來給大家分享了下原生javascript結合ajax實現(xiàn)數據請求的方法以及原理,非常的簡單實用,有需要的小伙伴可以參考下
    2016-04-04
  • 微信小程序switch組件使用詳解

    微信小程序switch組件使用詳解

    這篇文章主要為大家詳細介紹了微信小程序switch組件的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 深入探討TypeScript中類與接口的使用

    深入探討TypeScript中類與接口的使用

    TypeScript是一種強大的編程語言,它在JavaScript的基礎上添加了靜態(tài)類型檢查,使得代碼更加可維護和類型安全,在TypeScript中,類和接口是構建復雜應用程序的關鍵組成部分,本文將深入探討TypeScript中類與接口的使用,需要的朋友可以參考下
    2023-09-09
  • 基于JavaScript編寫一個圖片轉PDF轉換器

    基于JavaScript編寫一個圖片轉PDF轉換器

    本文為大家介紹了一個簡單的 JavaScript 項目,可以將圖片轉換為 PDF 文件。你可以從本地選擇任何一張圖片,只需點擊一下即可將其轉換為 PDF 文件,感興趣的可以動手嘗試一下
    2022-07-07
  • js實現(xiàn)右下角窗口彈出窗口效果

    js實現(xiàn)右下角窗口彈出窗口效果

    好的朋友經常需要彈出信息,這個功能不錯
    2008-09-09
  • uni-app小程序分享功能實現(xiàn)方法舉例

    uni-app小程序分享功能實現(xiàn)方法舉例

    這篇文章主要給大家介紹了關于uni-app小程序分享功能實現(xiàn)方法的相關資料,uni-app中有分享的API接口,但是需要現(xiàn)在QQ或者微信等開發(fā)者平臺上注冊賬號,驗證公司信息,而且只能分享圖片或者文本等內容,需要的朋友可以參考下
    2023-07-07
  • js實現(xiàn)選項卡內容切換以及折疊和展開效果【推薦】

    js實現(xiàn)選項卡內容切換以及折疊和展開效果【推薦】

    本文主要介紹了js實現(xiàn)選項卡內容切換以及文字折疊和展開效果的示例代碼。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01

最新評論

定边县| 晋中市| 荆门市| 体育| 晴隆县| 建德市| 雷山县| 曲松县| 岚皋县| 肥西县| 澳门| 盐边县| 西乌| 台南县| 大化| 四子王旗| 张家川| 定安县| 楚雄市| 百色市| 天全县| 德化县| 普兰店市| 平山县| 七台河市| 宜阳县| 太保市| 富锦市| 宣化县| 安仁县| 兴业县| 巴林左旗| 崇州市| 略阳县| 巴青县| 郎溪县| 富宁县| 东宁县| 顺平县| 石屏县| 宁陵县|