jQuery 탭 메뉴 만들기 (탭메뉴 버튼세로버전)

사실 탭메뉴는 사실 내가 가장 어려워하고 귀찮아하는 UI이다.
그래서 이번 참에 정리를 해서 두고두고 사용하고자 한다.

우선 결과물이다.

아래는 html 코드이다.

  <div class=”tab-container”>
    <ul class=”tab-menu”>
      <li><a href=”#tab1″ class=”active”>탭1</a></li>
      <li><a href=”#tab2″>탭2</a></li>
      <li><a href=”#tab3″>탭3</a></li>
    </ul>
    <div id=”tab1″ class=”tab-content active”>
      <h2>탭1 내용</h2>
      <p>탭1에 대한 내용입니다.</p>
    </div>
    <div id=”tab2″ class=”tab-content”>
      <h2>탭2 내용</h2>
      <p>탭2에 대한 내용입니다.</p>
    </div>
    <div id=”tab3″ class=”tab-content”>
      <h2>탭3 내용</h2>
      <p>탭3에 대한 내용입니다.</p>
    </div>
  </div>

아래는 CSS코드이다.
.tab-container {

    width: 600px;
    margin: 50px auto 0;
    display: flex;
}
.tab-menu {
    list-style: none;
    padding: 0;
    margin: 0;
    width: 30%;
}
.tab-menu li {
    margin-bottom: 10px;
    text-align: center;
}
.tab-menu li:last-child{
    margin-bottom: 0;
}
.tab-menu a {
    display: block;
    padding: 10px;
    background-color: #ccc;
    color: #333;
    text-decoration: none;
}
.tab-menu a:hover {
    background-color: #aaa;
    color: #fff;
}
.tab-menu a.active {
    background-color: #f0f0f0;
    color: #333;
}
.tab-content {
    display: none;
    padding: 10px;
    border: 1px solid #000;
    width: 70%;
}
.tab-content.active {
    display: block;
}

CSS가 별로 안이쁘다.
퍼가실 분들은 각자의 스타일과 ux에 맞게 사용하시길 바란다.

 

아래는 jQuery코드이다.

$(document).ready(function () {
    $(‘.tab-menu a’).click(function (event) {
        event.preventDefault();
        $(this).addClass(‘active’).parent().siblings().find(‘a’).removeClass(‘active’);
        $($(this).attr(‘href’)).addClass(‘active’).siblings().removeClass(‘active’);
    });
});

jQuery코드는 생각보다 간단하다.

 

HTML 코드 설명:

  • <div class="tab-container">는 탭 메뉴 컨테이너를 감싸는 <div> 요소이다.
  • <ul class="tab-menu">는 탭 메뉴를 나타내는 <ul> 요소이다.
  • <li> 요소 안에 <a> 요소를 사용하여 각 탭 메뉴 항목을 만든다.
  • <div> 요소로 각 탭 메뉴의 내용을 구성한다.
  • 각 탭 메뉴의 href 속성을 사용하여 해당하는 내용의 ID를 참조한다.

CSS 코드 설명:

  • .tab-container 클래스는 탭 메뉴 컨테이너의 스타일을 설정한다.
  • .tab-menu 클래스는 탭 메뉴 항목의 스타일을 설정한다.
  • .tab-content 클래스는 탭 메뉴 내용의 스타일을 설정한다.
  • .active 클래스는 활성화된 탭 메뉴 항목과 해당하는 내용을 스타일링한다.

jQuery 코드 설명:

  • $(document).ready() 함수는 페이지가 로드되었을 때 실행된다.
  • $('.tab-menu a').click() 함수는 탭 메뉴 항목의 클릭 이벤트를 처리한다.
  • event.preventDefault()는 기본 동작을 막습니다.
  • $(this).addClass('active').parent().siblings().find('a').removeClass('active')는 클릭한 탭 메뉴 항목에 active 클래스를 추가하고,
    형제 요소들에서 active 클래스를 제거한다.
  • $($(this).attr('href')).addClass('active').siblings().removeClass('active')는 클릭한 탭 메뉴 항목의 href 속성 값을 사용하여 해당하는 내용의 ID를 선택하고, active 클래스를 추가하고, 형제 요소들에서 active 클래스를 제거한다.

위 코드를 실행하면 세로로 된 탭 메뉴가 생성되며, 각각의 탭을 클릭하면 해당하는 내용이 보여지도록 구현되어 있다.
CSS를 사용하여 탭 메뉴와 내용의 스타일을 지정하고, jQuery를 사용하여 클릭 이벤트를 처리하여 탭을 활성화하고 해당하는 내용을 보여준다.

위 코드에서는 document.ready() 함수를 사용하여 페이지가 로드될 때 jQuery 코드가 실행되도록 한다.
그리고 tab-menu 클래스를 가진 ul 요소 안에 있는 a 요소가 클릭되었을 때,
이벤트 객체의 preventDefault() 메서드를 호출하여 기본 동작을 막아준다.
그리고 클릭한 요소에 active 클래스를 추가하고,
해당 요소의 부모 요소의 형제 요소들에서 a 요소를 찾아 active 클래스를 제거한다.
마지막으로 클릭한 요소의 href 속성 값과 매칭되는 div 요소에 active 클래스를 추가하고,
형제 요소들에서 active 클래스를 제거하여 해당 요소를 보여준다.

위 코드를 실행하면 세로로 된 탭 메뉴가 생성되며,
각각의 탭을 클릭하면 해당하는 내용이 보여지도록 구현되어있다.

코드들을 그대로 복사해서 사용해도 무방하고,
상황에 맞게, 본인의 스타일에 맞게 알아서 잘 적용해서 쓰자.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments