본문 바로가기

Java 웹 개발

21.11.11 - 웹 개발 입문 64일차

자바스크립트 - jQuery 

 

# jQuery로 제어할 수 있는 요소별 명령

- style
    - `$(선택자).css(항목, 값)` - 특정 스타일 항목을 특정 값으로 변경
- `$(선택자).css(항목)` - 특정 스타일 항목을 확인(반환)
- value
    - `$(선택자).val(값)` - value 설정
- `$(선택자).val()` - value 반환
- textContent
- `$(선택자).text(값)` - textContent 설정
- `$(선택자).text()` - textContent 반환
- innerHTML
- `$(선택자).html(값)` - innerHTML 설정
- `$(선택자).html()` - innerHTML 반환
- attribute
- `.attr(항목, 값)` - 대상 태그에 작성된 항목 속성 글자를 설정
- `.attr(항목)` - 대상 태그에 작성된 항목 속성 글자를 반환
- `.prop(항목, 값)` - 대상 태그가 가지고 있는 항목에 대한 상태를 설정
- `.prop(항목)` - 대상 태그가 가지고 있는 항목에 대한 상태를 반환
- `.prop(항목)` - 대상 태그가 가지고 있는 항목에 대한 상태를 반환
- class
    - `.addClass(이름)` - 클래스 추가
    - `.hasClass(이름)` - 클래스 검사

    - `.removeClass(이름)` - 클래스 제거
    - `.toggleClass(이름)` - 클래스 토글
- visibility
    - `show()` , `slideDown()` , `fadeIn()` - 표시 명령
    - `hide()` , `slideUp()` , `fadeOut()` - 숨김 명령
    - `toggle()` , `slideToggle()` , `fadeToggle()` - 토글 명령

 

 

jQuery 기초 및 기본 사용법

<!DOCTYPE html>
<html lang="en">
<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>jQuery 기본 형식</title>

    <!-- jquery cdn 또는 보유한 파일을 불러오는 코드를 작성-->
    <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    <script>

    </script>
</head>
<body>
    
</body>
</html>

 

 

ex) jQuery 기초 스타일

<!DOCTYPE html>
<html lang="en">
<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>Document</title>
    <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    <script>
        $(function(){
            $("h1").css("border","2px solid red")
                     .css("textDecorationLine","underline") 
                     .css("font-size","25px")
                     .css("margin","10px 0px")
        });
    </script>
</head>
<body>
    <h1>Hello jQuery</h1>
    <h1>Hello jQuery</h1>
    <h1>Hello jQuery</h1>
    <h1>Hello jQuery</h1>
    <h1>Hello jQuery</h1>
</body>
</html>

 

 

ex) jQuery 기초 클릭 이벤트

<!DOCTYPE html>
<html lang="en">
<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://code.jquery.com/jquery-3.6.0.js"></script>
    <script>
        $(function(){
            //클래스를 사용하여 선택할 수 있다.
            $(".color-red").click(function(){
                $("#target").css("color", "red");
            });
            $(".color-blue").click(function(){
                $("#target").css("color", "blue");
            });
            $(".bgcolor-yellow").click(function(){
                $("#target").css("background-color", "yellow");
            });
            $(".border-black").click(function(){
                console.log("현재 border : " + $("#target").css("border"));

                //$("#target").css("border", "1px solid black");
                $("#target").css("border-color", "black")
                                    .css("border-width", "1px")
                                    .css("border-style", "solid");
            });
        });
    </script>
</head>
<body>
    <h1 id="target">스타일 바꾸기</h1>
    <button class="color-red">글자 빨강</button>
    <button class="color-blue">글자 파랑</button>
    <button class="bgcolor-yellow">배경 노랑</button>
    <button class="border-black">테두리 검정</button>
</body>
</html>

 

ex) jQuery 글자 제어

<!DOCTYPE html>
<html lang="en">
<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>
    <link rel="stylesheet" type="text/css" href="./css/commons.css">
    <style>

    </style>
    <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    <script>
        $(function(){
            $("#answer").on("input", function(){
                //입력값을 answer라는 변수에 저장
                var answer = $(this).val();

                var len = answer.length;

                //만약 1000글자가 넘어간다면 넘어간 만큼 글자를 제거
                while(len > 1000){
                    //textarea.value = textarea.value.substring(0, textarea.value.length-1);
                    $(this).val($(this).val().substring(0, $(this).val().length - 1));
                    len--;
                }

                $("#answer-length").text(len);
            });
        });
    </script>
</head>
<body>
    <div class="container-700 container-center">
        <div class="row center">
            <h1>글자수</h1>
        </div>
        <div class="row">
            <h2>글자수제한하기</h2>
        </div>
        <div class="row">
            <textarea id="answer" rows="10" class="form-input"></textarea>
        </div>
        <div class="row right">
            <span id="answer-length">0</span> / 1000
        </div>
    </div>
</body>
</html>

 

ex) jQuery 정규 표현식

<!DOCTYPE html>
<html lang="en">
<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://code.jquery.com/jquery-3.6.0.js"></script>
    <script>
        $(function(){
            //document.querySelector("input[name=memberNick]").addEventListener("input", function(){});            
            $("input[name=memberNick]").on("input", function(){
                var regex = /^[가-힣]{2,10}$/;
                var nickname = $(this).val();

                //JS의 .nextElementSibling 은 jQuery의 .next()와 같다.(CSS에서 +와 같다)
                //JS의 .previousElementSibling 은 jQuery의 .prev()와 같다.(CSS에서는 불가능)

                //var span = document.querySelector("input[name=memberNick]").nextElementSibling;//VanillaJS
                //var span = this.nextElementSibing;//VanillaJS
                //var span = $("input[name=memberNick] + span");//jquery
                //var span = $("input[name=memberNick]").next();//jquery
                var span = $(this).next();//jquery

                if(regex.test(nickname)){
                    span.text("올바른 닉네임 형식입니다");
                }
                else{
                    span.text("닉네임은 한글 2~10자 이내로 작성하세요");
                }
            });
        });
    </script>
</head>
<body>
    <input type="text" name="memberNick">
    <span></span>
</body>
</html>

 

 

ex) jQuery 속성 제어 알아보기

<!DOCTYPE html>
<html lang="en">
<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>애트리뷰트(Attribute) 제어</title>
    <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    <script>
        $(function(){
            //체크박스의 체크 여부를 확인
            //.prop() - 태그 상태를 가져오는 명령
            //.attr() - 태그에 작성(표시)된 글자를 가져오는 명령(String)

            console.log($(".agree").prop("checked"));//.agree의 checked 상태가 어때요?
            console.log($(".agree").attr("checked"));//.agree의 checked 속성의 글자값이 뭐에요?

            console.log($(".sample-image").prop("width"));//.sample-image의 width 상태가 어때요?
            console.log($(".sample-image").attr("width"));//.sample-image의 width 속성의 글자값이 뭐에요?

            console.log($(".agree").prop("disabled"));//.agree의 disabled 상태가 어때요?
            console.log($(".agree").attr("disabled"));//.agree의 disabled 속성의 글자값이 뭐에요?

            console.log($(".price").prop("data-price"));//.price의 data-price 상태가 어때요?
            console.log($(".price").attr("data-price"));//.price의 data-price 속성의 글자값이 뭐에요?
        });
    </script>
</head>
<body>
    <input type="checkbox" class="agree" checked="checked">
    <span>동의합니다</span>
    <hr>
    <img src="image/loading.gif" width="200" height="200" class="sample-image">
    <hr>
    <span class="price" data-price="700"></span>
</body>
</html>

 

 

ex) jQuery 속성 제어를 이용해 비밀번호 입력창 만들기

<!DOCTYPE html>
<html lang="en">
<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>

    <!-- jquery cdn 또는 보유한 파일을 불러오는 코드를 작성 -->
    <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    <script>
        $(function(){
            $(".show-password").on("input", function(){
                //this == .show-password
                //체크여부 : this.checked 또는 $(this).prop()

                if($(this).prop("checked")){//체크가 되었다면... if(this.checked){}
                    //$("input[name=memberPw]").attr("type", "text");
                    $("input[name=memberPw]").prop("type", "text");
                }
                else{
                    //$("input[name=memberPw]").attr("type", "password");
                    $("input[name=memberPw]").prop("type", "password");
                }

            });
        });
    </script>
</head>
<body>
    <input type="password" name="memberPw">
    <label>
        <input type="checkbox" class="show-password">
        <span>비밀번호 표시</span>
    </label>
</body>
</html>

 

ex) jQuery 속성 제어를 이용해 선택, 전체 선택 만들기

<!DOCTYPE html>
<html lang="en">
<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>
    <style>
        label {
            display: block;
        }
    </style>
    <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    <script>
                $(function(){
            $(".check-all").on("input", function(){
                //주인공 : 선택된 .check-all
                //주인공의 상태 : this.checked 또는 $(this).prop("checked")

                var isChecked = $(this).prop("checked");
                //$("input[type=checkbox]:not(.check-all)").prop("checked", isChecked);
                //$(".check-all").prop("checked", isChecked);
                $("input[type=checkbox]").prop("checked", isChecked);
            });
        });
    </script>
</head>
<body>
    <label>
        <input type="checkbox" oninput="checkToggle2();" class="check-all"> 
        <span>전체 선택</span>
    </label>
    <hr>
    <label><input type="checkbox" oninput="check2();"><span>딸기</span></label>
    <label><input type="checkbox" oninput="check2();"><span>포도</span></label>
    <label><input type="checkbox" oninput="check2();"><span>람부탄</span></label>
    <label><input type="checkbox" oninput="check2();"><span>홍시</span></label>
    <label><input type="checkbox" oninput="check2();"><span>두리안</span></label>
    <label><input type="checkbox" oninput="check2();"><span>오렌지</span></label>
    <label><input type="checkbox" oninput="check2();"><span>망고</span></label>
    <label><input type="checkbox" oninput="check2();"><span>파인애플</span></label>
    <label><input type="checkbox" oninput="check2();"><span>용과</span></label>
    <label><input type="checkbox" oninput="check2();"><span>샤인머스켓</span></label>
    <label><input type="checkbox" oninput="check2();"><span>스타후르츠</span></label>
    <hr>
    <label>
        <input type="checkbox" oninput="checkToggle2();" class="check-all"> 
        <span>전체 선택</span>
    </label>
    <label>
        <input type="checkbox" oninput="checkToggle2();" class="check-all"> 
        <span>전체 선택</span>
    </label>
    <label>
        <input type="checkbox" oninput="checkToggle2();" class="check-all"> 
        <span>전체 선택</span>
    </label>

</body>
</html>

 

 

ex) jQuery 클래스 제어

<!DOCTYPE html>
<html lang="en">
<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>class 제어</title>

    <style>
        .sample-class {
            box-shadow: 0px 0px 10px 10px yellow;
        }
    </style>

    <!-- jquery cdn 또는 보유한 파일을 불러오는 코드를 작성 -->
    <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    <script>
        $(function(){
            $("#add-btn").click(function(){
                $("#sample-image").addClass("sample-class");
            });
            $("#remove-btn").click(function(){
                $("#sample-image").removeClass("sample-class");
            });
            $("#toggle-btn").click(function(){

               $("#sample-image").toggleClass("sample-class");
            });
        });
    </script>
</head>
<body>
    <button id="add-btn">추가</button>
    <button id="remove-btn">제거</button>
    <button id="toggle-btn">토글</button>
    <hr>
    <img src="./image/loading.gif" width="200" height="200" id="sample-image">
</body>
</html>

 

ex) jQuery 클래스 제어를 이용해 입력창 만들기

<!DOCTYPE html>
<html lang="en">
<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>
    <link rel="stylesheet" type="text/css" href="./css/commons.css">
    <style>
        .form-input {
            outline: none;
            background-repeat: no-repeat;   /* 배경이 반복되는 것을 방지 */
            background-size: contain;            /* 배경의 크기를 작은 쪽에 맞춤 */
            background-position: right;         /* 배경을 오른쪽으로 붙임 */

            /* 입력창에 더 맞도록 사이즈, 위치 재정의 */
            background-size: 25px;                 
            background-position: right 10px top 50%;
        }
        .form-input.success {
            border-color: green;
            background-image: url("./image/success.jpg"); /* 배경 이미지 경로 설정(폰트와 동일) */
        }
        .form-input.fail {
            border-color: red;
            background-image: url("./image/fail.jpg"); /* 배경 이미지 경로 설정(폰트와 동일) */
        }
        span.success {
            color:green;
            display: none;
        }
        span.fail {
            color:red;
            display: none;
        }
        .form-input.success ~ span.success { 
            display:block;
        }
        .form-input.fail ~ span.fail {
            display: block;
        }
    </style>
    <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    <script>
        $(function(){
            $("input[name=memberId]").on("input", function(){
                var regex = /^[a-z][a-z0-9]{7,19}$/;
                var id = $(this).val();

                $(this).removeClass("success").removeClass("fail");
                if(regex.test(id)){//원하는 형식
                    $(this).addClass("success");
                }
                else{//원치않는 형식
                    $(this).addClass("fail");
                }
            });
        });
    </script>
</head>
<body>
    <form>
        <div class="container-500 container-center">
            <div class="row">
                <label>아이디</label>
                <input type="text" name="memberId" class="form-input" autocomplete="off">
                <span class="success">멋진 아이디네요!</span>
                <span class="fail">아이디는 8~20자 이내 영문 소문자 + 숫자로 작성하세요!</span>
            </div>            
        </div>
    </form>
</body>
</html>

 

 

ex) jQuery  each 반복

<!DOCTYPE html>
<html lang="en">
<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>jQuery 반복문</title>
    <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    <script>
        $(function(){
            //.total-btn을 클릭하면 합계를 구하여 화면에 출력
            $(".total-btn").click(function(){

                //var total = $(".number-input").eq(0).val() + $(".number-input").eq(1).val() + ...

                //통합하여 처리할 수 없는 상황에 대한 jQuery의 해결책
                //.each() 명령을 사용
                //[1] $.each($(선택자), 코드); - 선택된 태그 수만큼 코드가 실행됨
                //[2] $(선택자).each(코드); - 선택된 태그 수만큼 코드가 실행됨

                var total = 0;

                $(".number-input").each(function(index, element){
                    //this == .number-input 중 현재 순서인 태그 == element
                    //console.log($(this).val());
                    //console.log(index + " , " + element);

                    total += parseInt($(this).val());
                });

                //console.log(total);
                $(".result > span").text(total);

            });
        });
    </script>
</head>
<body>
    <input type="number" class="number-input" value="0"><br><br>
    <input type="number" class="number-input" value="0"><br><br>
    <input type="number" class="number-input" value="0"><br><br>
    <input type="number" class="number-input" value="0"><br><br>
    <input type="number" class="number-input" value="0"><br><br>
    <button class="total-btn">합계 구하기</button>
    <hr>
    <div class="result">
        합계는 <span>0</span>입니다
    </div>
</body>
</html>

 

 

ex) jQuery  each 반복 을 이용하여 체크박스 선택항목 표시하기

<!DOCTYPE html>
<html lang="en">
<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>each 퀴즈</title>
    <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    <script>
        $(function(){
            //.check-item에 입력이 발생하면 선택된 항목을 계산
            //[1] 체크된 항목의 체크여부를 가려 추가 또는 삭제 후 출력
            //[2] 전체 체크항목을 계산하여 출력

            $(".check-item").on("input", function(){
                //this == 체크된 체크박스
                var selectedValue = "";

                $(".check-item").each(function(){
                    //this == 현재 차례의 체크박스
                    if($(this).prop("checked")){
                        var name = $(this).next().text();
                        selectedValue += name;
                        selectedValue += " ";
                    }
                });

                //console.log(selectedValue);
                $(".result > span").text(selectedValue);

            });
        });
    </script>
</head>
<body>
    <label><input type="checkbox" class="check-item"><span>딸기</span></label>
    <label><input type="checkbox" class="check-item"><span>포도</span></label>
    <label><input type="checkbox" class="check-item"><span>사과</span></label>
    <label><input type="checkbox" class="check-item"><span>귤</span></label>
    <label><input type="checkbox" class="check-item"><span>바나나</span></label>
    <label><input type="checkbox" class="check-item"><span>파인애플</span></label>
    <hr>
    <div class="result">선택된 항목 : <span></span></div>
</body>
</html>

 

ex) jQuery 기본 이벤트 제어

.confirm-link를 클릭하면 확인창 띄운 뒤 이동하도록 처리
1. jQuery에서는 return false를 이용한 기본 이벤트 방지가 가능
2. jQuery에서는 이벤트 객체(e)를 이용한 방지 명령이 가능

<!DOCTYPE html>
<html lang="en">
<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>

    <!-- jquery cdn 또는 보유한 파일을 불러오는 코드를 작성 -->
    <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    <script>

        $(function(){
            $(".confirm-link").click(function(){
                return false;
            });
        });
    </script>
</head>
<body>
        <a href="https://www.google.com" class="confirm-link">구글로 이동</a>
</body>
</html>

 

 

ex) jQuery 표시 또는 숨김

<!DOCTYPE html>
<html lang="en">
<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>
    <style>
        .hide {
            display:none;
        }
    </style>

    <!-- jquery cdn 또는 보유한 파일을 불러오는 코드를 작성 -->
    <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    <script>
        $(function(){
            $(".hide-btn").click(function(){
                $(".target").hide();
            });
            $(".show-btn").click(function(){
                $(".target").show();
            });
            $(".toggle-btn").click(function(){
                $(".target").toggle();
            });
        });
    </script>
</head>
<body>
    <button class="hide-btn">숨김</button>
    <button class="show-btn">표시</button>
    <button class="toggle-btn">토글</button>
    <hr>
    <img src="./image/lion.gif" width="200" height="200" class="target">
</body>
</html>

 

추가) 애니메이션 기능이 들어있는 코드

    <script>
   
       	$(function(){
            $(".hide-btn").click(function(){
                $(".target").fadeOut();
            });
            $(".show-btn").click(function(){
                $(".target").fadeIn();
            });
            $(".toggle-btn").click(function(){
                $(".target").fadeToggle();
            });
        });
        
        
         $(function(){
            $(".hide-btn").click(function(){
                $(".target").slideUp();
            });
            $(".show-btn").click(function(){
                $(".target").slideDown();
            });
            $(".toggle-btn").click(function(){
                $(".target").slideToggle();
            });
        });
        
    </script>

 

 

 

ex) jQuery 를 이용한 멀티 페이지 레이아웃

<!DOCTYPE html>
<html lang="en">
<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>jQuery 기본 형식</title>
    <link rel="stylesheet" type="text/css" href="./css/commons.css">

    <!-- jquery cdn 또는 보유한 파일을 불러오는 코드를 작성 -->
    <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    <script>
        $(function(){
            //[1] 1페이지 빼고 다 숨김
            //= 다 숨기고 1페이지만 표시
            $(".page").hide();
            $(".page").eq(0).show();

            //[2] 페이지 번호 관리 변수 생성
            var p = 0;

            //[3] 다음 단계로 버튼에 대한 이벤트 처리
            //= p를 1 증가시키고 해당하는 페이지를 표시
            //= form 안의 버튼은 submit 효과가 자동 부여되므로 이를 방지해야 한다.
            $(".btn-next").click(function(e){
                e.preventDefault();

                p++;
                $(".page").hide();
                $(".page").eq(p).show();
            });

            //[4] 이전 단계로 버튼에 대한 이벤트 처리
            $(".btn-prev").click(function(e){
                e.preventDefault();

                p--;
                $(".page").hide();
                $(".page").eq(p).show();
            });
        });
    </script>
</head>
<body>
    <form>
        <div class="page">
            <div class="container-700 container-center">
                <div class="row center">
                    <h1>1단계 : 로그인 정보</h1>
                </div>
                <div class="row">
                    <label>아이디</label>
                    <input type="text" name="??" class="form-input">
                </div>
                <div class="row">
                    <label>비밀번호</label>
                    <input type="password" name="??" class="form-input">
                </div>
                <div class="row">
                    <button class="btn btn-next form-btn">다음 단계로</button>
                </div>
            </div>

        </div>

        <div class="page">
            <div class="container-700 container-center">
                <div class="row center">
                    <h1>2단계 : 개인 정보</h1>
                </div>
                <div class="row">
                    <label>이름</label>
                    <input type="text" name="??" class="form-input">
                </div>
                <div class="row">
                    <label>전화번호</label>
                    <input type="text" name="??" class="form-input">
                </div>
                <div class="row">
                    <label>이메일</label>
                    <input type="text" name="??" class="form-input">
                </div>
                <div class="row">
                    <button class="btn btn-next form-btn">다음 단계로</button>
                </div>
                <div class="row">
                    <button class="btn btn-prev form-btn">이전 단계로</button>
                </div>
            </div>
        </div>

        <div class="page">
            <div class="container-700 container-center">
                <div class="row center">
                    <h1>3단계 : 이용자 정보</h1>
                </div>
                <div class="row">
                    <label>닉네임</label>
                    <input type="text" name="??" class="form-input">
                </div>
                <div class="row">
                    <label>프로필</label>
                    <input type="file" name="??" class="form-input">
                </div>
                <div class="row">
                    <button class="btn btn-prev form-btn">이전 단계로</button>
                </div>
                <div class="row">
                    <button class="btn btn-submit form-btn">회원 가입하기</button>
                </div>
            </div>

        </div>

    </form>
</body>
</html>

 

 

ex) jQuery 를 이용한 슬라이드 컨텐츠 메뉴 

<!DOCTYPE html>
<html lang="en">
<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>

    <!-- jquery cdn 또는 보유한 파일을 불러오는 코드를 작성 -->
    <script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    <script>
        $(function(){
            //.contents 안의 a태그를 누르면 이동을 중지하고 하위 메뉴를 토글한다.
            /*
            $(".contents a").click(function(e){
                e.preventDefault();
                //$(this).next().toggle();
                $(this).next().slideToggle();
            });
            */

            /*
            $(".contents").find("a").click(function(e){
                e.preventDefault();
                $(this).next().slideToggle();
            });
            */

            $(".contents").find("li").click(function(e){
                e.preventDefault();
                $(this).children("ol").slideToggle();
            });
        });
    </script>
</head>
<body>
    <ol class="contents">
        <li>
            <a href="#">자바</a>
            <ol>
                <li><a href="#">변수</a></li>
                <li><a href="#">입출력</a></li>
                <li><a href="#">조건</a></li>
                <li><a href="#">반복</a></li>
            </ol>
        </li>
        <li>
            <a href="#">데이터베이스</a>
            <ol>
                <li><a href="#">변수</a></li>
                <li><a href="#">입출력</a></li>
                <li><a href="#">조건</a></li>
                <li><a href="#">반복</a></li>
            </ol>
        </li>
    </ol>
</body>
</html>