부트스트랩 - 드롭다운: 초보자 가이드
안녕하세요, 미래의 웹 개발자 여러분! 오늘 우리는 부트스트랩 드롭다운의 fascinierende 세계로 뛰어들어 보겠습니다. 여러분의 친절한 이웃 컴퓨터 교사로서, 저는 여러분을 안내해 드리는 것을 기대하고 있습니다. 코드를 한 줄도 작성해 본 적이 없으신 걱정 마세요 - 우리는 처음부터 시작하여 차곡차곡 올라갈 테니까요. 그럼 커피(또는 차, 당신이 좋아하는 것이라면)를 한 잔 마시고, 시작해 보겠습니다!
드롭다운이란?
코드로 들어가기 전에, 드롭다운이 무엇인지 이야기해 보겠습니다. 상상해 보세요, 식당에 앉아 있고, 웨이터가 메뉴를 건네주는 것을. 그 메뉴는 드롭다운과 같습니다 - 선택肢을 제공해 주는 것입니다. 웹 디자인에서도 드롭다운은 비슷하게 작동합니다. 여러 가지 선택肢를 사용자에게 제공하는 compact한 방법으로, 웹 페이지를 복잡하게 만들지 않습니다.
기본 드롭다운
가장 기본적인 드롭다운에서 시작해 보겠습니다. 부트스트랩에서 보이는 것은 다음과 같습니다:
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown button
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</div>
이를 해부해 보겠습니다:
-
<div>
태그에dropdown
클래스를 추가하여 컨테이너를 만듭니다. - 내부에
<button>
태그가 있으며, 드롭다운을 트리거합니다.dropdown-toggle
클래스와data-bs-toggle="dropdown"
속성에 주목하세요. -
<ul>
태그에dropdown-menu
클래스를 추가하여 실제 드롭다운 콘텐츠를 만듭니다. -
<ul>
내부의 각<li>
태그는 드롭다운 메뉴의 항목입니다.
드롭다운 버튼 vs. 드롭다운 링크
드롭다운을 버튼 또는 링크를 사용하여 만들 수 있습니다. 이들이 어떻게 다른지 살펴보겠습니다:
드롭다운 버튼
이미 기본 예제에서 보았습니다. <button>
요소를 사용합니다:
<div class="dropdown">
<button class="btn btn-primary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown button
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<!-- Menu items -->
</ul>
</div>
드롭다운 링크
링크를 사용한 드롭다운을 만드는 것은 <a>
태그를 사용합니다:
<div class="dropdown">
<a class="btn btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown link
</a>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuLink">
<!-- Menu items -->
</ul>
</div>
주요 차이는 사용된 HTML 요소(<button>
vs. <a>
)입니다만, 기능은 비슷합니다.
변형
부트스트랩은 드롭다운에 다양한 색상 변형을 제공합니다. btn-secondary
클래스를 다음 중 하나로 변경할 수 있습니다:
btn-primary
btn-success
btn-info
btn-warning
btn-danger
btn-light
btn-dark
예를 들어:
<div class="dropdown">
<button class="btn btn-danger dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Danger Dropdown
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<!-- Menu items -->
</ul>
</div>
스플릿 버튼
스플릿 버튼 드롭다운은 버튼 액션과 드롭다운 트리거를 분리합니다:
<div class="btn-group">
<button type="button" class="btn btn-primary">Action</button>
<button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu">
<!-- Menu items -->
</ul>
</div>
여기서 왼쪽 부분의 버튼을 클릭하면 액션을 수행하고, 오른쪽 부분을 클릭하면 드롭다운을 엽니다.
사이즈 조정
드롭다운 버튼을 더 크거나 더 작게 만들 수 있습니다. btn-lg
또는 btn-sm
클래스를 추가하세요:
대형 드롭다운 버튼
<div class="dropdown">
<button class="btn btn-secondary btn-lg dropdown-toggle" type="button" id="dropdownMenuButtonLarge" data-bs-toggle="dropdown" aria-expanded="false">
Large Dropdown
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButtonLarge">
<!-- Menu items -->
</ul>
</div>
소형 드롭다운 버튼
<div class="dropdown">
<button class="btn btn-secondary btn-sm dropdown-toggle" type="button" id="dropdownMenuButtonSmall" data-bs-toggle="dropdown" aria-expanded="false">
Small Dropdown
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButtonSmall">
<!-- Menu items -->
</ul>
</div>
다크 드롭다운
스leek하고 다크 테마의 드롭다운을 만들기 위해 dropdown-menu-dark
클래스를 추가하세요:
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Dark Dropdown
</button>
<ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="dropdownMenuButton">
<!-- Menu items -->
</ul>
</div>
방향 조정
부트스트랩은 드롭다운의 방향을 변경할 수 있습니다. 다음 옵션을 탐구해 보겠습니다:
중앙 정렬 드롭다운
드롭다운 메뉴를 중앙 정렬하려면 dropdown-center
클래스를 컨테이너에 추가하세요:
<div class="dropdown-center">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownCenteredButton" data-bs-toggle="dropdown" aria-expanded="false">
Centered dropdown
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownCenteredButton">
<!-- Menu items -->
</ul>
</div>
상향 드롭다운
드롭다운이 위로 열리도록 dropup
클래스를 사용하세요:
<div class="dropup">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropupMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Dropup
</button>
<ul class="dropdown-menu" aria-labelledby="dropupMenuButton">
<!-- Menu items -->
</ul>
</div>
중앙 정렬 상향 드롭다운
dropup
과 dropdown-center
를 결합하여 중앙 정렬 상향 드롭다운을 만듭니다:
<div class="dropup-center dropup">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropupCenteredButton" data-bs-toggle="dropdown" aria-expanded="false">
Centered dropup
</button>
<ul class="dropdown-menu" aria-labelledby="dropupCenteredButton">
<!-- Menu items -->
</ul>
</div>
오른쪽 방향 드롭다운
드롭다운이 오른쪽으로 열리도록 dropend
클래스를 사용하세요:
<div class="dropend">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropendMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Dropend
</button>
<ul class="dropdown-menu" aria-labelledby="dropendMenuButton">
<!-- Menu items -->
</ul>
</div>
왼쪽 방향 드롭다운
드롭다운이 왼쪽으로 열리도록 dropstart
클래스를 사용하세요:
<div class="dropstart">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropstartMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Dropstart
</button>
<ul class="dropdown-menu" aria-labelledby="dropstartMenuButton">
<!-- Menu items -->
</ul>
</div>
메뉴 항목
이제 드롭다운 메뉴 내부에 무엇을 넣을지 이야기해 보겠습니다. 여러 가지 옵션을 가지고 있습니다:
헤더
메뉴 항목을 그룹화하려면 헤더를 추가하세요:
<ul class="dropdown-menu">
<li><h6 class="dropdown-header">Dropdown header</h6></li>
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
</ul>
구분선
관련된 메뉴 항목을 분리하려면 구분선을 사용하세요:
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
텍스트
비인터랙티브 텍스트를 포함할 수도 있습니다:
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
<li><span class="dropdown-item-text">Dropdown item text</span></li>
</ul>
양식
드롭다운에 양식을 포함할 수도 있습니다:
<div class="dropdown-menu">
<form class="px-4 py-3">
<div class="mb-3">
<label for="exampleDropdownFormEmail1" class="form-label">Email address</label>
<input type="email" class="form-control" id="exampleDropdownFormEmail1" placeholder="[email protected]">
</div>
<div class="mb-3">
<label for="exampleDropdownFormPassword1" class="form-label">Password</label>
<input type="password" class="form-control" id="exampleDropdownFormPassword1" placeholder="Password">
</div>
<div class="mb-3">
<div class="form-check">
<input type="checkbox" class="form-check-input" id="dropdownCheck">
<label class="form-check-label" for="dropdownCheck">
Remember me
</label>
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">New around here? Sign up</a>
<a class="dropdown-item" href="#">Forgot password?</a>
</div>
메뉴 정렬
기본적으로 드롭다운 메뉴는 왼쪽 정렬됩니다. 이를 변경할 수 있는 정렬 클래스가 있습니다:
오른쪽 정렬 메뉴
드롭다운 메뉴를 오른쪽 정렬하려면 dropdown-menu-end
클래스를 추가하세요:
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Right-aligned menu
</button>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="dropdownMenuButton">
<!-- Menu items -->
</ul>
</div>
반응형 정렬
정렬을 반응형으로 만들 수 있습니다:
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Left-aligned but right aligned when large screen
</button>
<ul class="dropdown-menu dropdown-menu-lg-end" aria-labelledby="dropdownMenuButton">
<!-- Menu items -->
</ul>
</div>
이 드롭다운은 기본적으로 왼쪽 정렬되지만, 대형 화면에서는 오른쪽 정렬됩니다.
드롭다운 옵션
부트스트랩 드롭다운은 몇 가지 추가 옵션을 제공합니다:
자동 닫기 행동
드롭다운이 닫히는 방식을 data-bs-auto-close
속성으로 제어할 수 있습니다:
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
Clickable outside
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<!-- Menu items -->
</ul>
</div>
data-bs-auto-close
의 옵션:
-
true
(기본): 드롭다운이 외부 또는 내부 클릭 시 닫습니다. -
false
: 드롭다운이 외부 또는 내부 클릭 시 닫히지 않습니다. -
inside
: 드롭다운이 내부 클릭 시 닫습니다. -
outside
: 드롭다운이 외부 클릭 시 닫습니다.
이제 부트스트랩 드롭다운에 대한 심화된 내용을 완료했습니다. 연습이 성공의 열쇠이니, 이 예제들을 실험해 보세요. 행복한 코딩 되세요, 여러분의 드롭다운이 항상 올바른 방향으로 열리기를 바랍니다!
Credits: Image by storyset