• 회원가입
  • 로그인
  • 구글아이디로 로그인

[js] JS - Lazyload (레이지로드)

Lazyload (레이지로드) : 스크롤할 때마다 콘텐츠가 나타나는 방식.

 

<style>

img {

  background: #F1F1FA;

  width: 400px;

  height: 300px;

  display: block;

  margin: 10px auto;

  border: 0;

}

</style>

 

<img src="https://ik.imagekit.io/demo/img/image1.jpeg?tr=w-400,h-300" />

<img src="https://ik.imagekit.io/demo/img/image2.jpeg?tr=w-400,h-300" />

<img src="https://ik.imagekit.io/demo/img/image3.jpg?tr=w-400,h-300" />

<img class="lazy" data-src="https://ik.imagekit.io/demo/img/image4.jpeg?tr=w-400,h-300" />

<img class="lazy" data-src="https://ik.imagekit.io/demo/img/image5.jpeg?tr=w-400,h-300" />

<img class="lazy" data-src="https://ik.imagekit.io/demo/img/image6.jpeg?tr=w-400,h-300" />

<img class="lazy" data-src="https://ik.imagekit.io/demo/img/image7.jpeg?tr=w-400,h-300" />

<img class="lazy" data-src="https://ik.imagekit.io/demo/img/image8.jpeg?tr=w-400,h-300" />

<img class="lazy" data-src="https://ik.imagekit.io/demo/img/image9.jpeg?tr=w-400,h-300" />

<img class="lazy" data-src="https://ik.imagekit.io/demo/img/image10.jpeg?tr=w-400,h-300" />


<script>

document.addEventListener("DOMContentLoaded", function() {

  var lazyloadImages = document.querySelectorAll("img.lazy");    

  var lazyloadThrottleTimeout;

  

  function lazyload () {

    if(lazyloadThrottleTimeout) {

      clearTimeout(lazyloadThrottleTimeout);

    }    

    

    lazyloadThrottleTimeout = setTimeout(function() {

        var scrollTop = window.pageYOffset;

        lazyloadImages.forEach(function(img) {

            if(img.offsetTop < (window.innerHeight + scrollTop)) {

              img.src = img.dataset.src;

              img.classList.remove('lazy');

            }

        });

        if(lazyloadImages.length == 0) { 

          document.removeEventListener("scroll", lazyload);

          window.removeEventListener("resize", lazyload);

          window.removeEventListener("orientationChange", lazyload);

        }

    }, 20);

  }

  

  document.addEventListener("scroll", lazyload);

  window.addEventListener("resize", lazyload);

  window.addEventListener("orientationChange", lazyload);

});

</script>

 

결과보기

 


분류 제목
js JS - 예약어 (= 변수명・라벨명・함수명 등으로 사용 불가능한 단어)
js JS - play(), pause() 메서드 - 동영상 재생/멈춤. (= play메서드, pause메서드 =…
js JS - 입력값 길이 제한 후, 경고창 띄우기
js JS - 눈 내리는 효과 (Snowflakes effect)
js JS - CSS 다크모드 토글 (Dark Mode Toggle) ※ 클래스 상호 대체/변환
js JS - 스크롤 정도/위치 진행바 표시기 (Scroll Indicator Bar)
js JS - 숫자 (카운팅/변동) 애니 효과
js JS - select() 메서드 - INPUT 텍스트 내용 선택 (= select메서드 = 실렉트메서드|셀렉…
js JS - 특정 배수만 입력 허용
js JS - 자동 세미콜론 삽입 (ASI : Automatic semicolon insertion) 적용되는 구…
js JS - JS링크종류 / 이동주소 숨기기 / 팝업창 크기 조절 (= 음악방송링크 창크기 지정) ★ oncli…
js JS - 유튜브 동영상 (전체재생시간/현재재생시간) 체크 ※ youtube iframe (유튜브 아이프레임)…
js JS - contentDocument 속성 - 아이프레임(iframe)에 의해 생성된 document 객체 …
js JS - contentWindow 속성 - iframe (아이프레임)에 의해 생성된 window 객체 반환 …
js JS - 최대 입력 가능한 (문자열/숫자) 길이/개수 설정 ※ 음수 부호는 카운트에서 제외
js JS - autocomplete 속성 - INPUT 텍스트 자동완성 설정/반환 (= autocomplete속…
js JS - autofocus 속성 - INPUT 텍스트 자동포커스 설정/반환 (= autofocus속성 = 오…
js JS - defaultValue 속성 - INPUT 텍스트필드의 기본값 설정/반환 (= defaultValu…
js JS - disabled 속성 - INPUT 텍스트필드 비활성화 설정/반환 (= disabled속성 = 디스…
js JS - form 속성 - INPUT 텍스트 필드 포함하는 FORM 객체 반환 (= form속성 = 폼속성)…
2/4
목록
찾아주셔서 감사합니다. Since 2012