본문 바로가기
Front/jQuery

jQuery - 이벤트(윈도우 이벤트)

by Hyeon_ 2021. 12. 14.

이벤트 유형

  • 윈도우 이벤트
  • 입력 양식 이벤트
  • 마우스 이벤트
  • 키보드 이벤트

윈도우 이벤트

윈도우 이벤트 종류

  • ready(document) : 문서 객체 요소(DOM 요소)가 로드 되었을 때 발생 문서 객체 요소가 자바스크립트에서 사용 가능한 상태인지 확인하고 작동이 가능한 안전 상태일 때 발생
  • resize : 윈도우 창 크기 변경 시 발생
  • scroll : 윈도우 창 스크롤 이동 시 발생
  • load : 문서 객체 요소가 모두 로드 되었을 때 발생. ready와 차이점은 리소스, 이미지 또는 음악 등 로드가 완료된 경우
  • unload : 문서 객체를 닫을 때 발생

$(document).ready()

  • document의 DOM 객체가 로드되고, 브라우저가 DOM 트리를 생성한 직후 외부 리소스, 이미지 등의로드 여부 상고나 없이 실행

$(window).load()

  • HTML 문서 뿐 아니라 모든 외부 리소스(css, js), 이미지 등이 웹 브라우저 메모리에 모두 올려지면(로드되면) 실행

이벤드 발생 순서

  • $(document).ready()가 먼저
  • $(window).load()가 뒤에 발생
  • 이벤트 시점에 따라 오작동 발생 가능성 있기 때문에 같이 사용하지 않고 분리해서 사용

윈도우 이벤트 예제

windowResize.html
  • resize() 이벤트
  • 윈도우 크기 알아와서 <h3> 태그에 출력하고 윈도우 크기에 따라 배경색 변경
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JavaScript</title>
    <script src="jquery-3.6.0.min.js"></script>
    <script type="text/javascript"> 
        $(document).ready(function(){
            // 윈도우 크기가 변경될 때 resize 이벤트 발생
            $(window).resize(function() {
                // 윈도우 크기 알아와서
                var winWidth = $(window).width();
                var winHeight = $(window).height();

                // <h3> 태그에 크기 출력
                $('h3').text("윈도우 크기 : " + winWidth + " x " + winHeight);

                // 크기에 따라 배경색 변경 : 변수에 색상 값 저장
                var bgColor;
                if(winWidth >= 900) bgColor = "green";
                else if(winWidth >= 700) bgColor = "yellow";
                else bgColor = "red";

                // 변수에 저장된 값에 따라 문서 배경색 변경
                $('body').css('background', bgColor);
            });
        });

    </script>
</head>
<body>
    <h3>윈도우 크기 : 윈도우 크기를 변경해보세요.</h3>
</body>
</html>
imageResize.html
  • 윈도우 크기에 맞춰 이미지 크기 변경 (가로-세로 비율 유지하면서 변경)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JavaScript</title>
    <script src="jquery-3.6.0.min.js"></script>
    <style type="text/css">
        * {margin: 0;}
        img {width: 100%;}
    </style>
    <script type="text/javascript"> 
        $(document).ready(function(){
            // 윈도우 크기 변경될 때 윈도우 크기에 이미지 크기 맞추기
            $(window).on('resize', function(){
                // 윈도우 가로 길이 알아와서 변수에 저장
                var winWidth = $(window).width();

                // 이미지 가로 x 세로 비율에 맞춰서 높이 구하기
                var imgHeight = winWidth * 600 / 1920;

                // 이미지의 가로, 세로 길이 설정
                $('#topImg').css({'width':winWidth, 'height':imgHeight});
            });
        });

    </script>
</head>
<body>
    <div id="topImgBox">
        <img src="image/topImg.jpg" id="topImg">
    </div>
</body>
</html>