JS - jQuery를 이용한 간단한 사이드바 구현하기 (Sidebar)

반응형

 

Overivew

  • 이번 포스팅에서는 간단한 사이드바의 기능을 하는 HTML을 구현합니다.
  • 기능 구현에만 중점을 두었기 때문에 디자인은 개인이 알아서!


jQuery 호출

<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

HTML 구성

  • 설계
    • 사이드바는 왼쪽 영역에 위치함
    • 사이드바 보이기/감추기 버튼을 통해 사이드바를 보이게하고 감추게 하여야 함
    • 본문은 사이드바의 오른쪽에 위치하여야 함
    • 사이드바의 보이기/감추기에 따라 본문의 내용의 위치도 그에 맞게 변경되어야 함
<html>
<body>
	<!-- 사이드바 영역 -->
    <div id="sidebar" style="position:fixed; top:0; left:0; width:200px; height:100vh;">
    	<!-- 사이드바 영역을 구분짓기 위한 경계선 -->
        <div style="width:1px; height:100vh; background-color:black; float:right;"></div>
        <!-- 사이드바에서 나타낼 내용들 -->
        Sidebar Content
    </div>
    <!-- 본문 영역 -->
    <div id="containerDiv">
    	<!-- 사이드바 감추기/보기 버튼 -->
        <button id="hide-sidebar">Hide Sidebar</button>
        <button id="show-sidebar">Show Sidebar</button>
        <!-- 본문에 나타낼 내용들 -->
        <div id="mainDiv">A</div>
    </div>
</body>
</html>

CSS 설정

/* 사이드바 영역에 따른 본문 여백 설정 */
.container {
    margin-left: 200px;
}

/* 본문에 보여질 예시를 위한 박스 설정 */
.box {
    position:absolute;
    display:flex;
    left:50px;
    top:50px;
    width:50px;
    height:50px;
    border:2px dotted red;
    font-size : 30px;
    font-weight: bold;
    align-items: center;
    justify-content: center;
}

Javascript 구현

window.onload = function() {
    // 본문의 요소들 스타일 설정
    $('#containerDiv').addClass('container');
    $('#mainDiv').addClass( ['box', 'container'] );

    // 사이드바를 숨길 버튼을 클릭했을 때 실행할 코드
    $('#hide-sidebar').click(function() {
        $('#sidebar').hide();
        // 본문의 내용들 사라진 사이드바의 영역만큼 여백 제거
        $('.container').css("margin-left", 0);
    });

    // 사이드바를 보여줄 버튼을 클릭했을 때 실행할 코드
    $('#show-sidebar').click(function() {
        $('#sidebar').show();
        // 본문의 내용들 나타난 사이드바의 영역만큼 여백 추가
        $('.container').css("margin-left", 200);
    });
}

전체 코드

<!-- js sidebar test.html -->
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">

    <!-- jQuery -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    
    <style>
        .container {
            margin-left: 200px;
        }

        .box {
            position:absolute;
            display:flex;
            left:50px;
            top:50px;
            width:50px;
            height:50px;
            border:2px dotted red;
            font-size : 30px;
            font-weight: bold;
            align-items: center;
            justify-content: center;
        }
    </style>

    <script>
        window.onload = function() {
            // 본문의 요소들 스타일 설정
            $('#containerDiv').addClass('container');
            $('#mainDiv').addClass( ['box', 'container'] );

            // 사이드바를 숨길 버튼을 클릭했을 때 실행할 코드
            $('#hide-sidebar').click(function() {
                $('#sidebar').hide();
                // 본문의 내용들 사라진 사이드바의 영역만큼 여백 제거
                $('.container').css("margin-left", 0);
            });
            
            // 사이드바를 보여줄 버튼을 클릭했을 때 실행할 코드
            $('#show-sidebar').click(function() {
                $('#sidebar').show();
                // 본문의 내용들 나타난 사이드바의 영역만큼 여백 추가
                $('.container').css("margin-left", 200);
            });
        }
    </script>
</head>
<body>
    <div id="sidebar" style="position:fixed; top:0; left:0; width:200px; height:100vh;">
        <div style="width:1px; height:100vh; background-color:black; float:right;"></div>
        Sidebar Content
    </div>
    <div id="containerDiv">
        <button id="hide-sidebar">Hide Sidebar</button>
        <button id="show-sidebar">Show Sidebar</button>
        <div id="mainDiv">A</div>
    </div>
</body>
</html>

확인


참고

반응형