- 드롭다운 메뉴 만들기
-
아래는 드롭다운 메뉴 작성의 기본 형식인데, 드롭다운 토글러로 <button> 대신
<a> 요소를 사용할 수도 있지만, <button>을 쓰면;
버튼의 색상 변경(
.btn-danger)이나 크기 변경(.btn-lg/sm) 등이 쉬워진다는 장점이 있다! -
드롭다운 래퍼 <div>에 주어지는
.dropdown dropup/dropend/dropstart는 드롭다운 목록을 래퍼 전체의 위쪽/뒤쪽/앞쪽 (아래쪽은 기본값임!) 방향으로 펼치는데, 드롭다운 메뉴를 펼치려는 방향의 공간 여분이 드롭다운의 크기보다 작다면; 반대 방향으로 펼쳐진다!
ul .dropdown-menu dropdown-menu-end
div .dropdown dropup/dropend/dropstart
- 버튼그룹 드롭다운
-
드롭다운 버튼에서 텍스트와 아이콘을 분할하려는 경우, 드롭다운 바깥 <div> 래퍼에서
.dropdown클래스 대신.btn-group클래스로 주고 각각의 버튼을 만들어주면 된다
☞
.btn-group btn-group-lg/sm 클래스는 그룹 내 모든 버튼의 크기를
더 크게/작게 설정한다!
- 드롭다운 아이템 오프셋
-
data-bs-offset= "x, y"는 start, top 으로부터 x, y 거리만큼 떨어져서 드롭다운 목록을 배치한다 -
한편, 버튼그룹에서는
data-bs-reference= "parent"를 추가해주면; 분할 버튼의 위치가 아닌 (부모 요소인)버튼 그룹의 위치를 기준으로 배치된다
- 반응형 드롭다운 정렬
-
반응형 정렬을 하고자 한다면; 먼저 버튼에서
data-bs-display= "static"값을 주어 동적 포지셔닝 기능을 비활성화해주어야 한다
☞
위 드롭다운 메뉴는 기본적으로 앞쪽에서부터 맞추어지지만, md
브레이크포인트에서부터는(.dropdown-menu dropdown-menu-lg-end) 뒤쪽에 맞추어진다
←
화면 크기 늘이고 줄이면서 확인해보세요..
이 사용자정의 .fadeUp-Ani 드롭다운은 부트스트랩 기본
드롭다운 메뉴의 밋밋한 동작에 약간의 Css 스타일 정의를 덧붙여
좀 더 부드럽고 폼나게 움직이도록 한 것입니다!
* cf) 이러한 종류의 애니메이션 움직임에는 플러그인을 쓸 수도 있지만, 이렇게 직접 Css 스타일 정의를 통해 만들어쓸 수도 있습니다
☞
.dropdown 내부의 버튼과 .dropdown-menu 사이에는
.dropdown-menu my-0 식으로 마진을 없애주는 것이 좋습니다
- 아니라면; 마우스 커서가 버튼에서 중간의 빈 공간을 거쳐 내려갈 때 아래
드롭다운 메뉴가 사라져버리는 상황과 마주칠 수도 있습니다
.fadeUp-Ani {
animation-name: fadeUp;
animation-duration: 700ms;
animation-timing-function: margin cubic-bezier(0.18, 1.25, 0.4, 1), opacity cubic-bezier(0, 1, 0.4, 1);
} @keyframes fadeUp {
0% { opacity: 0; margin-top: 1rem; }
100% { opacity: 1; margin-top: 0; }
}
☞
여기서는 margin-top: 0; 값으로
.dropdown 내부의 버튼과 .dropdown-menu 사이의
간격을 없애주었습니다!