티스토리 뷰

[ 1. 클래스 메소드 ] (***)

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리 - 클래스 메소드</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>

    <style>

        .aqua{
            background-color: #0ff;
        }

        .red{
            background-color: red;
        }

        .green{
            background-color: #0f0;
        }

        .yellow{
            background-color: #ff0;
        }

        /* 클래스 속성은 재사용이 가능하기때문에 중요하다. */

    </style>

    <script>

        $(function(){

            console.clear();

            // Selector이 선택한 요소에 글로벌 속성인 class = "aqua" 추가
            $("#p1").addClass("aqua");

            // Selector이 선택한 요소에서 글로벌 속성인 class = "red" 삭제
            $("#p2").removeClass("red");

            // + 클래스는 하나의 속성값만 가지는 것이 아니라 class = "v1 v2 v3"와 같이 다수의 속성값을 가질 수 있다. (*)
            // + 그렇기에 removeClass는 클래스를 삭제하는 것이 아니라 해당 속성값을 삭제하는 것이다. (***)

            // Selector이 선택한 요소에서 글로벌 속성인 class = "green"을 추가/삭제 토굴
            $("#p3").toggleClass("green");
            $("#p4").toggleClass("green");

            // + toggleClass는 해당 속성(이 경우 class = "green")이 없으면 추가해주고, 있으면 삭제해준다. ( 실해할때마다 다른 결과가 나온다. ) (*)

            // Selector이 선택한 요소의 컨텐츠를 인자값으로 변경
            $("#p6").text( $("#p5").hasClass("yellow") );

            // p5아이디를 가지고 있는 태그가 클래스 속성으로 yellow값을 가지고 있는지 텍스트로 출력해 준다.

        }) // .jq

    </script>
    
</head>

<body>

    <p id="p1">내용2</p>
    <p id="p2" class="red">내용2</p>
    <p id="p3">내용3</p>
    <p id="p4" class="green">내용4</p>
    <p id="p5" class="yellow">내용5</p>
    <p id="p6"></p>

</body>

</html>

[ 2. prop 메소드 ]

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>

    <script>

        $(function(){

            console.clear();

            // val() 메소드는 입력양식의 사용자 입력값을 반환한다.
            let result1 = $("#user_name").val();
            console.log(result1);

            // val(인자) 메소드는 입력양식에 인자값을 넣어준다.
            $("#user_id").val("javascript");

            // 선택자가 선택한 요소(태그)의 속성(속성 노드가 아니다.) 중 이름이 "defaultValue"인 속성값을 반환한다.
            // prop는 선택자가 선택한 객체의 필드의 값을 추출한다. ( 속성과는 다르다. )
            let result2 = $("#user_id").prop("defaultValue");
            console.log(result2);

            // defaultValue 속성값으로

        }) // .jq

    </script>
    
</head>

<body>
    
    <h1>객체 조작 및 생성</h1>

    <form action="#" id="form1">

        <p>
            <label for="user_name">이름</label>
            <input type="text" name="user_name" id="user_name" value="용대리">
        </p>

        <p>
            <label for="user_id">아이디</label>
            <input type="text" name="user_id" id="user_id" value="hello">
        </p>

        <!-- 라벨 테그를 통해서 input:text를 만드는 것이 좋다. -->

    </form>

</body>

</html>

[ 3. 수치조작 메소드 ]

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리 - 수치조작메소드</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>
    
    <style>

        *{
            padding: 0;
        }

        #p1, #p2 {
            width: 100px;
            height: 50px;
            padding: 20px;
            border: 5px solid black;
            background-color: yellow;
            /* background는 여백까지 색칠해준다. */
        }

    </style>

    <script>

        $(function(){

            console.clear();

            // 박스모델의 컨텐츠 영역의 높이 반환
            let w1 = $("#p1").height();
            console.log(w1);

            // 박스모델의 컨텐츠 영역 + 안쪽 여백(패딩)의 높이 반환
            let w2 = $("#p1").innerHeight();
            console.log(w2);

            // 박스모델의 컨텐츠 + 안쪽여백(padding) + 경계선(border)까지 포함한 높이값 반환
            let w3 = $("#p1").outerHeight();
            console.log(w3);

            // 박스모델의 컨텐츠 + 안쪽여백(padding) + 경계선(border)까지 포함한 너비와 높이값 설정
            $("#p2").outerWidth(100).outerHeight(100);
            // 마치 border박스 기준으로 설정하는 것처럼 된다.

        }) // .jq

    </script>

</head>

<body>
    <h1>수치 조작 메소드</h1>

    <p id="p1">내용1</p>
    <p id="p2">내용2</p>
</body>

</html>

[ 4. 객체 편집 메소드 ] (***)

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리 - 객체 편집 메소드(**)</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>

    <style>

        *{
            margin: 0;
            padding: 0;
        }

        #box_wrap{
            width: 300px;
            height: 200px;
            margin: 50px auto 0;
            position: relative;
            background-color: #ccc;
        }

        .box{
            width: 50px;
            height: 50px;

            position: absolute;
            top: 50px;
            left: 100px;

            /* absolute는 부모요소 중 relative인 요소를 기준으로 위치를 잡는다. ( 없으면 body태그를 기준으로 한다. ) */

            background-color: red;
        }

    </style>

    <script>

        // 제이쿼리 메소드를 이용해서, 선택한 요소의 위치값을 얻어보자!
        $(function(){

            console.clear();

            // init객체 생성
            let $txt1 = $(".txt_1 span");
            let $txt2 = $(".txt_2 span");
            let $box = $(".box");

            // 지금의 핵심 : offset(), position() 메소드 ( 서로 기준점이 다르다. ) (***)
            var off_t = $box.offset().top; // 100
            var pos_t = $box.position().top; // 50

            // position() 메소드는 상대위치로 기준점이 되었던 relative요소를 기준으로 위치값을 반환한다.
            // offset() 메소드는 절대위치로 뷰포트를 기준으로 위치를 반환한다.

            // span태그에 텍스트로 값을 넣어주었다.
            $txt1.text(off_t);
            $txt2.text(pos_t);

        }) // .jq

    </script>
    
</head>

<body>

    <div id="box_wrap">
        <p class="box">박스</p>
    </div>

    <p class="txt_1">절대 top위칫값 : <span></span></p>
    <p class="txt_2">상대 top위칫값 : <span></span></p>
    
</body>

</html>

[ 5. 위치 메소드 ] (****)

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리 - 위치메소드(****)</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>

    <style>

        *{
            margin: 0;
            padding: 0;
        }

        body{
            line-height: 1;
        }

        #wrap{
            height: 5000px;
            padding-top: 2000px;
        }

    </style>

    <script>

        $(function(){

            console.clear();

            // 뷰포트를 기준으로 h1 태그의 위치값 반환
            let topNum = $("h1").offset().top;
            console.log(`topNum : ${topNum}`);

            // 최상위 객체인 window 객체의 메소드인 scrollTop(스크롤위치값)으로 수직 스크롤바의 위치를 조절(***)
            $(window).scrollTop(topNum);

            // + 수직스크롤의 위치를 h1의 위치로 이동시킨다.

            // 현재 수직 스크롤바의 위치값 획득
            let sct = $(window).scrollTop();
            console.log(sct);

        }) // .jq

    </script>
    
</head>

<body>
    <div id="wrap">
        <h1>위치 메소드</h1>
    </div>
</body>

</html>

[ 6. 조별과제 - 스크롤바 자동으로 내리기 ] (**)

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리 - 조별과제</title>

    <!-- 스크롤이 자동으로 내려가는 기능을 만들어라 -->

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>

    <style>

        body{
            height: 3000px;
            /* 높이를 3000px로 정했어도, 노트북 사양에 따라서 제한될 수 있다. ( 본인의 경우 2047이 최대이다. ) */
            background-image: linear-gradient(45deg, red, yellow, blue);
        }

    </style>

    <script>

        // $(function(){

        //     console.clear();

        //     let hi = 0; // 시작 높이 지정

        //     setInterval(function(){
        //         $(window).scrollTop(hi); // 해당 위치로 이동
        //         hi += 10;

        //         if( hi == 3000 ){
        //             hi = 0;
        //         } // if - 마지막까지 갔으면, 다시 위로 올라간다.

        //     }, 10);

        // }); // .jq 1

        // ===============================================================

        // console.debug(`window.innerHeight : ${window.innerHeight}`);

        // const interval1 = setInterval(() => {
        //     window.scrollBy(0, 10);
        //     console.debug(`current scroll pos : ${window.scrollY}`);

        // window.scrollY는 스크롤된 길이, window.innerHeight는 주소창을 제외한 뷰포트의 높이를 의미한다.(**)
        //     if( (window.scrollY + window.innerHeight) >= document.body.offsetHeight ) {
        //         console.log(`scroll finished.`);

        //         clearInterval(interval1);
        //     } // if

        // }); // interval1

        // ===============================================================
                // 선생님의 코드 1
        // ===============================================================

        // const px = 1;
        // const interval = 50;
        // const maxHeight = 3000;

        // // 1. 지정된 시간주기에 따라서, 수직스크롤바를 움직일 이동 픽셀 수를 호출함수의 인자로 전달
        // const intervalId = setInterval(scrollTop_T, interval, px);

        // // 2. 웹 브라우저 윈도의 스크롤바의 위치에 이동할때 발생하는 이벤트인 scroll에 이벤트 핸들러로 익명함수 설정
        // $(window).scroll(() => {

        //     console.debug(`>>>> current position : ${window.scrollY}`);

        //     // 화면끝에 도착했는지를 판단하는 방법 (***)
        //     if($(window).innerHeight() + $(window).scrollTop() > $("body").height() ){
        //         clearInterval(intervalId);
        //         console.debug(`>>>>>> setInterval Released.`);
        //     } // if

        // }) // 제이쿼리의 이벤트 설정 방법

        // // 3. window 내장객체의 scrollBy(x,y) 메소드로 인자값만큼의 픽셀수로 수직 스크롤을 증분이동시킨다.
        // function scrollTop_T(pixels){
        //     window.scrollBy(0, pixels);
        // } // scrollTop_T

        // ===============================================================

        // $(function(){
        //     console.clear();

        //     setInterval(function(){
        //         window.scrollBy(0, 10); // 호출될때마다 10씩 이동하게 된다. (***)
        //     }, 100);

        //     // scrollBy는 현재 좌표를 기준으로 전달된 좌표(x,y)만큼 이동한다. (***)

        //     if( (window.scrollY + window.innerHeight) >= document.body.offsetHeight ){
        //         console.log(`scroll finished.`);
        //         clearInterval(setInterval);
        //     } // if

        // }); //.jq 2

        // ===============================================================

        // window.onscroll = function(){
        //     console.debug(`현재 위치 : ${window.scrollY}`);
        // } // onscroll - 스크롤이 움직일때마다 현재 위치를 반환한다.

        // ===============================================================

        // animate를 통해서 수직 스크롤이 3000px까지 이동하게 할 수 있다. ( 듀레이션 시간을 3000으로 지정하였다. )
        // $('html,body').animate({ scrollTop: "3000px" }, 3000); // .jq3

        // ===============================================================
            // 선생님의 코드 2
        // ===============================================================

        const px = 10;               // 매 주기마다 스크롤바를 이동시킬 픽셀수
        const interval = 10;        // (간격)주기 설정(milliseconds)
        const maxHeight = 3000;     // 브라우저 viewport 의 최대 높이 설정

        // 1. 지정된 시간주기에 따라, 수직스크롤바를 움직일 이동픽셀수를 호출함수의 인자로 전달
        const intervalId = setInterval(scrollTop, interval, px)

        // 2. 웹브라우저 윈도의 스크롤바의 위치에 이동할 때 발생하는 이벤트인,
        //    onscroll에 Event Handler 로 익명함수 설정:

        // 1st. window 내장객체의 onscroll 이벤트 속성에 이벤트 핸들러 설정 (***)
        // window.onscroll = function () {                  // 1st. method
        //      ...
        // };

        // 2nd. window 내장객체의 이벤트 설정 메소드인 addEventListener 이용하여 이벤트 핸들러 설정
        // window.addEventListener('scroll', function () {  // 2nd. method (***)
        //      ...
        // };

        // 3rd. 제이쿼리의 이벤트 설정 메소드 이용 방법
        $(window).scroll(() => {                            // 3rd. method (***)
            console.debug(`>> current position: ${window.scrollY}`)

            //----- How to detect the end of scroll bar in the web browsers. (*******)
            if($(window).innerHeight() + $(window).scrollTop() > $("body").height()) {   // 1. 제이쿼리 메소드 이용
            // if(window.innerHeight + window.scrollY > document.body.scrollHeight) {          // 2. 자바스크립트 내장객체 속성이용
                clearInterval(intervalId);                  // setInterval 자원해제
                console.debug('>>> setInterval released.')
            } // if
        });

        // 3. window 내장객체의 scrollBy(x,y) 메소드로, 인자값만큼의 픽셀수로 수직스크롤 증분이동시킴
        function scrollTop(pixels) {
            window.scrollBy(0, pixels)  // 수직스크롤 증분이동
        } // scrollTop

    </script>
    
</head>

<body>
    
</body>

</html>

[ 7. 조별과제 2 - 프로그래스 바 생성 ] (****)

 

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>제이쿼리 - 조별과제 ( 스크롤에 따른 진행바 만들기 )</title>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js"></script>

    <style>

        body{
            height: 3000px;
            background-image: linear-gradient(45deg, red, yellow, blue);
        }

        #scroll{
            position: fixed;
            top: 50px;
            left: 5%;

            width: 1700px;
            height: 20px;

            align-items: center;
        }

    </style>

    <script>

        $( function(){

            console.clear();

            console.debug(`window.innerHeight : ${window.innerHeight}`);

            let pg = 0;

            window.onscroll = function(){
                console.log(`현재 위치 : ${window.scrollY}`);
                pg = window.scrollY;
                $('#scroll').attr({value : pg });
            }; // onscroll - 스크롤 위치에 따라서 프로그래스 바가 달라지게 설정 ( 자동으로 움직이는 것 외에도 바가 변하도록 )

            // scroll에 max 속성 추가
            $("#scroll").attr({ max : document.body.offsetHeight - window.innerHeight });

            const interval = setInterval(() => {

                window.scrollBy(0,10);
                // x로 0, y로 10만큼 이동한다.

                pg += 10;
                $('#scroll').attr({value : pg });

                if( (window.scrollY + window.innerHeight) >= document.body.offsetHeight ) {
                    clearInterval(interval);
                 } // if

            }, 10);

        }); // .jq

    </script>
    
</head>

<body>
    
    <progress id="scroll" value="0" max="3000"></progress>

</body>

</html>

 

728x90
댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
최근에 올라온 글
Total
Today
Yesterday
공지사항