본문 바로가기
HTML&CSS

아코디언 메뉴 만들기

by 초콜렛시몽 2024. 12. 12.
반응형

세로형 아코디언(Vertical Accordion) 코드를 작성하려면, HTML, CSS, 그리고 JavaScript를 이용하여 구현할 수 있습니다. 여기서는 HTML로 아코디언의 구조를 만들고, CSS로 디자인을 스타일링하며, JavaScript로 아코디언 기능을 추가하는 방식으로 작성하겠습니다.

 

HTML

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>세로형 아코디언</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="accordion-container">
        <div class="accordion-item">
            <button class="accordion-header">항목 1</button>
            <div class="accordion-content">
                <p>항목 1의 내용입니다.</p>
            </div>
        </div>
        <div class="accordion-item">
            <button class="accordion-header">항목 2</button>
            <div class="accordion-content">
                <p>항목 2의 내용입니다.</p>
            </div>
        </div>
        <div class="accordion-item">
            <button class="accordion-header">항목 3</button>
            <div class="accordion-content">
                <p>항목 3의 내용입니다.</p>
            </div>
        </div>
    </div>

    <script src="script.js"></script>
</body>
</html>

 

CSS (style.css)

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: Arial, sans-serif;
    background-color: #f4f4f9;
    padding: 20px;
}

.accordion-container {
    width: 300px;
    margin: 0 auto;
    background-color: #fff;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.accordion-item {
    border-bottom: 1px solid #ddd;
}

.accordion-header {
    width: 100%;
    padding: 15px;
    text-align: left;
    background-color: #f1f1f1;
    border: none;
    cursor: pointer;
    font-size: 16px;
    font-weight: bold;
    transition: background-color 0.3s;
}

.accordion-header:hover {
    background-color: #e1e1e1;
}

.accordion-content {
    padding: 15px;
    background-color: #fafafa;
    display: none;
    font-size: 14px;
    color: #333;
}

 

JavaScript (script.js)

// 모든 아코디언 헤더를 가져옵니다.
const accordionHeaders = document.querySelectorAll('.accordion-header');

// 각 아코디언 항목에 클릭 이벤트를 추가합니다.
accordionHeaders.forEach(header => {
    header.addEventListener('click', function() {
        const content = this.nextElementSibling;

        // 해당 항목이 열려 있으면 닫고, 닫혀 있으면 열기
        if (content.style.display === 'block') {
            content.style.display = 'none';
        } else {
            // 다른 열려 있는 항목을 닫기
            document.querySelectorAll('.accordion-content').forEach(item => {
                item.style.display = 'none';
            });
            content.style.display = 'block';
        }
    });
});

설명:

  1. HTML:
    •   accordion-container는 모든 아코디언 항목을 감싸는 컨테이너입니다.
    •   각 아코디언 항목은 accordion-item 클래스를 가지고 있으며, accordion-header는 클릭 가능한 버튼 역할을 합니다.
    •   accordion-content는 숨겨진 내용 영역입니다.
  2. CSS:
    •   accordion-container는 세로형 아코디언의 전체 스타일을 담당합니다.
    •   accordion-header는 버튼 스타일을 지정하며, accordion-content는 숨겨지는 콘텐츠 영역의 스타일을 담당합니다.
  3. JavaScript:
    •   accordion-header에 클릭 이벤트 리스너를 추가하여, 클릭 시 해당 콘텐츠를 열고, 다른 콘텐츠는 닫습니다.
    •   display 스타일을 이용해 아코디언 콘텐츠를 토글합니다.

이 코드를 사용하면 세로형 아코디언을 구현할 수 있습니다. 각 항목을 클릭하면 해당 항목의 내용이 표시되고, 다른 항목이 열려 있는 경우에는 닫히게 됩니다.

 

반응형