Bootstrap - 네비게이션과 탭

소개

안녕하세요, 웹 개발자 지망생 여러분! 오늘 우리는 웹 디자인에서 가장 많이 사용되는 컴포넌트 중 하나를 배울 것입니다: 네비게이션 메뉴와 탭. 이 요소들은 웹사이트의 도로 표지와 같아서, 사용자가 다른 섹션과 콘텐츠로 이동하도록 안내합니다. Bootstrap의 네비와 탭 컴포넌트를 사용하면, 모든 기기에서 작동하는 세련되고 반응형 네비게이션 시스템을 만들 수 있습니다. 그럼 손을 펴고编码을 시작해보겠습니다!

Bootstrap - Navs & tabs

기본 네비게이션

초보부터 시작해보겠습니다. Bootstrap은 .nav 클래스를 사용하여 네비게이션 메뉴를 쉽게 만들 수 있습니다. 다음은 기본 예제입니다:

<ul class="nav">
  <li class="nav-item">
    <a class="nav-link active" href="#">홈</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">소개</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">서비스</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled" href="#">연락처</a>
  </li>
</ul>

이 코드는 수평 목록 형식의 네비게이션 링크를 생성합니다. active 클래스는 현재 페이지를 강조하고, disabled 클래스는 현재 클릭할 수 없는 링크를 회색으로 만듭니다.

사용 가능한 스타일

Bootstrap은 네비게이션에 다양한 스타일을 제공합니다. 두 가지 인기 있는 스타일을 살펴보겠습니다.

네비 탭
<ul class="nav nav-tabs">
  <li class="nav-item">
    <a class="nav-link active" href="#">홈</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">프로필</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">메시지</a>
  </li>
</ul>

이 코드는 콘텐츠를 다른 섹션으로 나누기에 적합한 탭 형식의 네비게이션 메뉴를 생성합니다.

네비 탭let
<ul class="nav nav-pills">
  <li class="nav-item">
    <a class="nav-link active" href="#">홈</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">프로필</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">메시지</a>
  </li>
</ul>

탭let 스타일은 네비게이션 링크에 버튼처럼 보이게 합니다.

수평 정렬

네비 아이템의 정렬을 쉽게 변경할 수 있습니다. 다음은 방법입니다:

<ul class="nav justify-content-center">
  <!-- 네비 아이템 여기에 -->
</ul>

<ul class="nav justify-content-end">
  <!-- 네비 아이템 여기에 -->
</ul>

justify-content-center 클래스는 네비 아이템을 중앙에 정렬하고, justify-content-end 클래스는 오른쪽으로 정렬합니다.

Flex 유틸리티 사용

Bootstrap의 flex 유틸리티를 사용하면 네비 레이아웃에 더 많은 제어를 할 수 있습니다:

<nav class="nav flex-column">
  <a class="nav-link active" href="#">활성</a>
  <a class="nav-link" href="#">링크</a>
  <a class="nav-link" href="#">링크</a>
  <a class="nav-link disabled" href="#">비활성</a>
</nav>

이 코드는 flex-column 클래스를 사용하여 수직 네비게이션 메뉴를 생성합니다.

접근성 고려

네비게이션을 만들 때 접근성을 고려하는 것은 매우 중요합니다. 적절한 경우 <nav> 요소를 사용하고, 활성 아이템에 aria-current="page"를 추가합니다:

<nav class="nav">
  <a class="nav-link active" aria-current="page" href="#">활성</a>
  <!-- 다른 네비 아이템 -->
</nav>

드롭다운 사용

네비게이션에 드롭다운 메뉴를 포함할 수 있습니다. 더 복잡한 네비게이션 구조를 만드는 데 유용합니다:

<ul class="nav nav-tabs">
  <li class="nav-item">
    <a class="nav-link active" href="#">활성</a>
  </li>
  <li class="nav-item dropdown">
    <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">드롭다운</a>
    <ul class="dropdown-menu">
      <li><a class="dropdown-item" href="#">동작</a></li>
      <li><a class="dropdown-item" href="#">다른 동작</a></li>
      <li><a class="dropdown-item" href="#">여기에 다른 것</a></li>
      <li><hr class="dropdown-divider"></li>
      <li><a class="dropdown-item" href="#">분리된 링크</a></li>
    </ul>
  </li>
  <!-- 다른 네비 아이템 -->
</ul>

이 코드는 드롭다운 메뉴가 포함된 네비게이션을 생성합니다. data-bs-toggle="dropdown" 속성은 드롭다운 기능을 활성화합니다.

탭과 드롭다운

탭 스타일의 네비게이션에 드롭다운을 포함할 수도 있습니다:

<ul class="nav nav-tabs">
  <li class="nav-item">
    <a class="nav-link active" href="#">활성</a>
  </li>
  <li class="nav-item dropdown">
    <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">드롭다운</a>
    <ul class="dropdown-menu">
      <!-- 드롭다운 아이템 -->
    </ul>
  </li>
  <!-- 다른 네비 아이템 -->
</ul>

탭let과 드롭다운

드롭다운을 포함한 탭let 스타일의 네비게이션도 가능합니다:

<ul class="nav nav-pills">
  <li class="nav-item">
    <a class="nav-link active" href="#">활성</a>
  </li>
  <li class="nav-item dropdown">
    <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">드롭다운</a>
    <ul class="dropdown-menu">
      <!-- 드롭다운 아이템 -->
    </ul>
  </li>
  <!-- 다른 네비 아이템 -->
</ul>

자바스크립트 동작

Bootstrap의 자바스크립트 플러그인을 사용하면 네비게이션과 탭에 동적 동작을 추가할 수 있습니다. 다음은 탭과 콘텐츠 패널을 만드는 방법입니다:

<ul class="nav nav-tabs" id="myTab" role="tablist">
  <li class="nav-item" role="presentation">
    <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">홈</button>
  </li>
  <li class="nav-item" role="presentation">
    <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">프로필</button>
  </li>
</ul>
<div class="tab-content" id="myTabContent">
  <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">홈 콘텐츠 여기에...</div>
  <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">프로필 콘텐츠 여기에...</div>
</div>

이 코드는 클릭할 때마다 다른 콘텐츠 패널을 표시하는 탭을 생성합니다.

접근성

탭을 접근성 있게 만들기 위해 role, aria-controls, aria-selected, aria-labelledby 속성을 사용하세요.

데이터 속성 사용

데이터 속성을 사용하면 자바스크립트를 작성하지 않고 탭 동작을 제어할 수 있습니다:

<ul class="nav nav-tabs" id="myTab" role="tablist">
  <li class="nav-item" role="presentation">
    <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">홈</button>
  </li>
  <!-- 다른 탭 버튼 -->
</ul>

data-bs-toggle="tab"data-bs-target="#home" 속성은 추가적인 자바스크립트 없이 탭 기능을 활성화합니다.

자바스크립트를 통해 활성화

자바스크립트를 사용하여 탭을 활성화할 수도 있습니다:

var triggerTabList = [].slice.call(document.querySelectorAll('#myTab button'))
triggerTabList.forEach(function (triggerEl) {
  var tabTrigger = new bootstrap.Tab(triggerEl)

  triggerEl.addEventListener('click', function (event) {
    event.preventDefault()
    tabTrigger.show()
  })
})

이 코드는 각 탭 버튼에 클릭 이벤트 리스너를 추가하여 클릭할 때마다 해당 탭을 활성화합니다.

.fade 효과

탭에.fade 클래스를 추가하면 탭 전환 시 부드러운 효과를 만듭니다:

<div class="tab-content">
  <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">...</div>
  <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">...</div>
</div>

이렇게 하면 탭 간 전환 시 부드러운 효과가 나타납니다.

그리고 이렇게 해서! Bootstrap을 사용하여 네비게이션 메뉴와 탭을 만들고 커스터마이즈하는 방법을 배웠습니다. 연습이 완벽함을 기억하시고, 이 컴포넌트를 자신의 프로젝트에서 실험해 보세요. 행복한 코딩을! |

방법 설명
Tab.getInstance(element) DOM 요소와 연결된 탭 인스턴스를 가져옵니다
Tab.getOrCreateInstance(element) DOM 요소와 연결된 탭 인스턴스를 가져오거나 새로 만듭니다
show() 주어진 탭을 선택하고 해당 탭의 패널을 표시합니다
dispose() 요소의 탭을 파괴합니다

Credits: Image by storyset