国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務(wù)器之家 - 編程語(yǔ)言 - JavaScript - js教程 - 如何利用JS檢查元素是否在視口內(nèi)

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

2022-03-01 16:29冷石 js教程

這篇文章主要給大家介紹了關(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ì)于視口的位置

?
1
2
3
const isElementVisible = (el) => {
 const rect = el.getBoundingClientRect();
};

獲取瀏覽器窗口的寬高

?
1
2
3
4
5
const isElementVisible = (el) => {
 const rect = el.getBoundingClientRect();
  const vWidth = window.innerWidth || document.documentElement.clientWidth;
  const vHeight = window.innerHeight || document.documentElement.clientHeight;
};

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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ù)。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 獲取要監(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)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://coldstone.fun/post/2021/04/13/js-check-element/

延伸 · 閱讀

精彩推薦
  • js教程如何在現(xiàn)代JavaScript中編寫異步任務(wù)

    如何在現(xiàn)代JavaScript中編寫異步任務(wù)

    這篇文章主要給大家介紹了關(guān)于如何在現(xiàn)代JavaScript中編寫異步任務(wù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考...

    瘋狂的技術(shù)宅11842022-01-12
  • js教程js動(dòng)態(tài)添加帶圓圈序號(hào)列表的實(shí)例代碼

    js動(dòng)態(tài)添加帶圓圈序號(hào)列表的實(shí)例代碼

    這篇文章主要介紹了js動(dòng)態(tài)添加帶圓圈序號(hào)列表的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參...

    一晃的春夏秋冬7322022-01-21
  • js教程javascript模擬實(shí)現(xiàn)計(jì)算器

    javascript模擬實(shí)現(xiàn)計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了javascript模擬實(shí)現(xiàn)計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下...

    HelloWorld11622022-02-23
  • js教程Javascript實(shí)現(xiàn)打鼓效果

    Javascript實(shí)現(xiàn)打鼓效果

    這篇文章主要為大家詳細(xì)介紹了Javascript實(shí)現(xiàn)打鼓效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下...

    qq_413093507612022-01-11
  • js教程three.js顯示中文字體與tween應(yīng)用詳析

    three.js顯示中文字體與tween應(yīng)用詳析

    這篇文章主要給大家介紹了關(guān)于three.js顯示中文字體與tween應(yīng)用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)...

    郭志強(qiáng)10002021-12-24
  • js教程JavaScript中跨域問(wèn)題的深入理解

    JavaScript中跨域問(wèn)題的深入理解

    這篇文章主要給大家介紹了關(guān)于JavaScript中跨域問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要...

    三七安6842022-02-10
  • js教程你不知道的 JS 沙箱隔離

    你不知道的 JS 沙箱隔離

    本文接下來(lái)的內(nèi)容,將介紹我在探索基于 Web Worker 實(shí)現(xiàn) JavaScript 沙箱隔離方案過(guò)程中的一些資料收集、理解以及我的踩坑和思考的過(guò)程。...

    前端大全10352021-12-29
  • js教程微信小程序開(kāi)發(fā)篇之踩坑記錄

    微信小程序開(kāi)發(fā)篇之踩坑記錄

    這篇文章主要給大家介紹了關(guān)于微信小程序開(kāi)發(fā)篇之踩坑記錄的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)...

    孫夢(mèng)舸8542022-02-16
主站蜘蛛池模板: 免费成人在线看 | 久操视频免费在线观看 | 午夜男人的天堂 | 久久成人免费 | 欧美一级网站 | 91免费在线 | 国内精品视频在线观看 | 91国内在线观看 | 亚洲精品久久久久一区二区三区 | 在线播放视频一区 | 成人高清在线 | 中文字幕亚洲欧美 | 交视频在线观看国产 | av久草| 亚洲精品在线视频观看 | 日韩视频不卡 | 男人的天堂在线视频 | 国产综合久久 | 久久久无码精品亚洲日韩按摩 | 日韩在线播放一区二区三区 | 久久精品国产v日韩v亚洲 | 久久精品国产精品亚洲 | 99精品一区二区 | 日韩一区二区三区电影在线观看 | 国产精品对白一区二区三区 | 亚洲欧美激情精品一区二区 | 亚洲青青草| |级毛片 | 自拍偷拍 亚洲 欧美 | 国产精品欧美一区二区三区 | 免费观看爱爱视频 | 亚洲入口 | 久久久久久久久久影院 | 亚洲精品久久久久久久久久久久久 | 久久综合久| 亚洲中字幕 | 国精品一区 | 久久av综合网 | 成人免费视频网站在线观看 | 日韩精品一区二区在线观看 | 国产精品自拍系列 |