드롭다운

PromptAction·2024년 7월 31일
0

프론트엔드

목록 보기
8/16

드롭다운

  • 사용자 인터페이스(UI)에서 선택할 수 있는 옵션들을 리스트 형태로 보여주는 요소. 일반적으로 버튼이나 입력 필드 등을 클릭하면 숨겨진 메뉴가 아래로 펼쳐지며, 사용자는 그 메뉴에서 원하는 항목을 선택할 수 있음. 드롭다운은 공간을 절약하고, 여러 옵션을 깔끔하게 정리하여 사용자에게 제공하는 데 유용. 주로 설정, 메뉴, 필터링 등 다양한 상황에 사용된다.
import React, { useState } from 'react';

const DropdownExample = () => {
    const [isOpen, setIsOpen] = useState(false);

    const toggleDropdown = () => {
        setIsOpen(!isOpen);
    };

    return (
        <div className="relative inline-block">
            <button
                onClick={toggleDropdown}
                className="bg-blue-500 text-white font-bold py-2 px-4 rounded"
            >
                드롭다운 메뉴
            </button>

            {isOpen && (
                <div className="absolute left-0 mt-2 w-48 bg-white border border-gray-300 rounded shadow-lg">
                    <ul className="py-1">
                        <li className="px-4 py-2 hover:bg-gray-100 cursor-pointer">옵션 1</li>
                        <li className="px-4 py-2 hover:bg-gray-100 cursor-pointer">옵션 2</li>
                        <li className="px-4 py-2 hover:bg-gray-100 cursor-pointer">옵션 3</li>
                    </ul>
                </div>
            )}
        </div>
    );
};

export default DropdownExample;
  • useState를 사용해 드롭다운의 열림 상태를 관리.
  • 이벤트 핸들러 toggleDropdown 함수는 버튼 클릭 시 드롭다운 상태를 토글함.
  • isOpen 이 true 일 때만 드롭다운 메뉴가 렌더링됨.
  • 스타일 예시
메뉴 버튼 스타일
inline-flex: 인라인 플렉스 컨테이너로 설정
w-full: 가로 폭을 100%로 설정
justify-center: 수평 중앙 정렬
gap-x-1.5: 아이콘과 텍스트 사이의 수평 간격
rounded-md: 중간 정도의 둥근 모서리
bg-white: 배경 색상을 흰색으로 설정
px-3 py-2: 수평 및 수직 패딩
text-sm: 작은 텍스트 크기
font-semibold: 중간 두께의 글꼴
text-gray-900: 텍스트 색상을 진회색으로 설정
shadow-sm: 작은 그림자 효과
ring-1 ring-inset ring-gray-300: 테두리 효과
hover:bg-gray-50: 호버 시 배경 색상 변경
드롭다운 아이템 스타일
inline-flex: 인라인 플렉스 컨테이너로 설정
w-full: 가로 폭을 100%로 설정
justify-center: 수평 중앙 정렬
gap-x-1.5: 아이콘과 텍스트 사이의 수평 간격
rounded-md: 중간 정도의 둥근 모서리
bg-white: 배경 색상을 흰색으로 설정
px-3 py-2: 수평 및 수직 패딩
text-sm: 작은 텍스트 크기
font-semibold: 중간 두께의 글꼴
text-gray-900: 텍스트 색상을 진회색으로 설정
shadow-sm: 작은 그림자 효과
ring-1 ring-inset ring-gray-300: 테두리 효과
hover:bg-gray-50: 호버 시 배경 색상 변경
드롭다운 개별 메뉴 항목 스타일
block: 블록 요소로 설정
px-4 py-2: 수평 및 수직 패딩
text-sm: 작은 텍스트 크기
text-gray-700: 텍스트 색상을 회색으로 설정
data-[focus]:bg-gray-100: 포커스 시 배경 색상 변경
data-[focus]:text-gray-900: 포커스 시 텍스트 색상 변경

0개의 댓글