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

如何利用JS檢查元素是否在視口內(nèi)

 更新時(shí)間:2021年04月14日 09:45:55   作者:冷石  
這篇文章主要給大家介紹了關(guān)于如何利用JS檢查元素是否在視口內(nèi)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

分享兩個(gè)監(jiān)測(cè)元素是否在視口內(nèi)的方法

1. 位置計(jì)算

使用 Element.getBoundingClientRect() 方法返回元素相對(duì)于視口的位置

const isElementVisible = (el) => {
 const rect = el.getBoundingClientRect();
};

獲取瀏覽器窗口的寬高

const isElementVisible = (el) => {
 const rect = el.getBoundingClientRect();
  const vWidth = window.innerWidth || document.documentElement.clientWidth;
  const vHeight = window.innerHeight || document.documentElement.clientHeight;
};

判斷元素是否在視口內(nèi),如圖所示

const isElementVisible = (el) => {
  const rect = el.getBoundingClientRect()
  const vWidth = window.innerWidth || document.documentElement.clientWidth
  const vHeight = window.innerHeight || document.documentElement.clientHeight

  
  if (
    rect.right < 0 ||
    rect.bottom < 0 ||
    rect.left > vWidth ||
    rect.top > vHeight
  ) {
    return false
  }

  return true
}

getBoundingClientRect 方法會(huì)使瀏覽器發(fā)生回流和重繪,性能消耗稍大,但兼容性比 Intersection Observer 要好。

2. Intersection Observer

The Intersection Observer API provides a way to asynchronously observe changes in the intersection of a target element with an ancestor element or with a top-level document's viewport.

Intersection Observer API提供了一種異步檢測(cè)目標(biāo)元素與祖先元素或 viewport 相交情況變化的方法。在目標(biāo)元素與視口或者其他指定元素發(fā)生交集時(shí)和觸發(fā)配置的回調(diào)函數(shù)。

// 獲取要監(jiān)測(cè)的元素
const boxes = document.querySelectorAll('.box')

// 創(chuàng)建觀察者,配置回調(diào)函數(shù)
// 通過(guò) isIntersecting 屬性判斷元素與視口是否相交
const observer = new IntersectionObserver((entries, observer) => {
 entries.forEach((entry) => {
    console.log(
      entry.target,
      entry.isIntersecting ? "visible" : "invisible"
    );
  });
})

boxes.forEach((box) => {
  observer.observe(box);
});

參考

how-to-check-an-element-is-in-viewport-4bcl

Intersection Observer API

總結(jié)

到此這篇關(guān)于如何利用JS檢查元素是否在視口內(nèi)的文章就介紹到這了,更多相關(guān)JS檢查元素在視口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

防城港市| 榆社县| 西贡区| 安徽省| 大姚县| 循化| 漳平市| 镇远县| 安康市| 汉源县| 万载县| 孟村| 桃园县| 麦盖提县| 精河县| 南汇区| 旬邑县| 林口县| 景泰县| 深泽县| 木兰县| 蒲城县| 潍坊市| 霞浦县| 台南市| 溆浦县| 玛曲县| 金门县| 聂拉木县| 共和县| 海盐县| 五大连池市| 若尔盖县| 太白县| 华容县| 呼和浩特市| 新密市| 漳平市| 新竹县| 鹤山市| 古交市|