어떻게 JS 를 이용 하여 요소 가 시야 에 있 는 지 검사 합 니까?
두 개의 모니터링 요소 가 시야 에 있 는 지 의 방법 을 공유 하 다
1.위치 계산
Element.getBoundingClient Rect()방법 을 사용 하여 시각 적 위치 에 대한 요 소 를 되 돌려 줍 니 다.
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;
};
원소 가 시야 안에 있 는 지 판단 하 는 것 은 그림 과 같다.
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
}
getBoundingClient Rect 방법 은 브 라 우 저 를 되 돌 리 며 다시 그립 니 다.성능 소 모 는 다소 크 지만 호환성 은 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 는 목표 요소 와 조상 요소 또는viewport교차 상황 변 화 를 비동기 적 으로 감지 하 는 방법 을 제공 합 니 다.대상 요소 와 시점 또는 기타 지정 한 요소 가 교 집합 될 때 설정 을 촉발 하 는 리 셋 함수 입 니 다.
//
const boxes = document.querySelectorAll('.box')
// ,
// 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
총결산
JS 를 이용 하여 요소 가 시야 에 있 는 지 확인 하 는 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 JS 검사 요소 가 시야 에 있 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.