티스토리 뷰
728x90
반응형
const options = {
// null을 설정하거나 무엇도 설정하지 않으면 브라우저 viewport가 기준이 된다.
root: null,
// 타겟 요소의 20%가 루트 요소와 겹치면 콜백을 실행한다.
threshold: 0.2
}
// Intersection Observer 인스턴스
const observer = new IntersectionObserver(function(entries,observer) {
entries.forEach(entry => {
// 루트 요소와 타겟 요소가 교차하면 dataset에 있는 이미지 url을 타겟요소의 src 에 넣어준다.
if (entry.isIntersecting) {
//타겟 요소의 src 속성의 값을 dataset 의 이미지 url 로 교체
entry.target.src = entry.target.dataset.src
// 지연 로딩이 실행되면 unobserve
observer.unobserve(entry.target)
}
})
}, options)
const imgs = document.querySelectorAll('img')
imgs.forEach((img) => {
// img들을 observe한다.
observer.observe(img)
})
https://developer.mozilla.org/ko/docs/Web/API/Intersection_Observer_API
728x90
반응형
'Javascript' 카테고리의 다른 글
[Javascript] navigator.userAgent 모바일 장비 구분하기 (0) | 2024.02.29 |
---|---|
[JavaScript] URLSearchParams 쿼리 문자열, 파라미터 추출 (1) | 2024.02.28 |
script 태그 위치 (0) | 2022.09.07 |
jQuery 스크롤 이동 (0) | 2022.05.02 |
javascript에서 Timer, Countdown 서버 시간 동기화 (0) | 2022.03.24 |
반응형
300x250