레트로게이밍드롭다운메뉴
반응형 레트로/빈티지 테마의 드롭다운 메뉴 구성 요소로, 게임 웹사이트에 적합하며 다크 모드를 지원하는 차분한 색 구성표가 있습니다.
HTML 코드
<div class="relative inline-block text-left font-mono">
<button id="retroDropdownButton" type="button" class="inline-flex justify-center w-full rounded-md border border-gray-400 bg-gray-200 px-4 py-2 text-sm font-bold text-gray-800 shadow-sm hover:bg-gray-300 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-purple-600 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:hover:bg-gray-600 dark:focus:ring-offset-gray-800 dark:focus:ring-purple-400 transform transition-all duration-150 ease-in-out active:translate-y-1" aria-expanded="false" aria-haspopup="true">
Game Actions
<svg class="-mr-1 ml-2 h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd" />
</svg>
</button>
<div id="retroDropdownMenu" class="origin-top-right absolute right-0 mt-2 w-56 rounded-md shadow-lg bg-gray-200 ring-1 ring-black ring-opacity-5 focus:outline-none border-t-2 border-l-2 border-r-4 border-b-4 border-gray-500 dark:bg-gray-800 dark:border-gray-600 hidden opacity-0 scale-95 transition-all duration-200 ease-out transform" role="menu" aria-orientation="vertical" aria-labelledby="retroDropdownButton" tabindex="-1">
<div class="py-1" role="none">
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-300 hover:text-gray-900 border-b border-dashed border-gray-400 dark:text-gray-300 dark:hover:bg-gray-700 dark:hover:text-gray-100 dark:border-gray-600 cursor-pointer" role="menuitem" tabindex="-1" id="menu-item-0">
<span class="pr-2 text-yellow-600 dark:text-yellow-400">▶</span> New Game
</a>
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-300 hover:text-gray-900 border-b border-dashed border-gray-400 dark:text-gray-300 dark:hover:bg-gray-700 dark:hover:text-gray-100 dark:border-gray-600 cursor-pointer" role="menuitem" tabindex="-1" id="menu-item-1">
<span class="pr-2 text-red-600 dark:text-red-400">■</span> Load Game
</a>
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-300 hover:text-gray-900 border-b border-dashed border-gray-400 dark:text-gray-300 dark:hover:bg-gray-700 dark:hover:text-gray-100 dark:border-gray-600 cursor-pointer" role="menuitem" tabindex="-1" id="menu-item-2">
<span class="pr-2 text-green-600 dark:text-green-400">●</span> Save Game
</a>
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-300 hover:text-gray-900 dark:text-gray-300 dark:hover:bg-gray-700 dark:hover:text-gray-100 cursor-pointer" role="menuitem" tabindex="-1" id="menu-item-3">
<span class="pr-2 text-blue-600 dark:text-blue-400">◆</span> Options
</a>
</div>
</div>
</div>
<script>
// Basic JavaScript for demonstration, not part of the HTML/Tailwind solution itself.
// In a real application, you'd use a JS framework or a dedicated script.
const dropdownButton = document.getElementById('retroDropdownButton');
const dropdownMenu = document.getElementById('retroDropdownMenu');
dropdownButton.addEventListener('click', () => {
const isExpanded = dropdownButton.getAttribute('aria-expanded') === 'true';
dropdownButton.setAttribute('aria-expanded', !isExpanded);
if (!isExpanded) {
dropdownMenu.classList.remove('hidden', 'opacity-0', 'scale-95');
dropdownMenu.classList.add('block', 'opacity-100', 'scale-100');
dropdownMenu.focus();
} else {
dropdownMenu.classList.remove('block', 'opacity-100', 'scale-100');
dropdownMenu.classList.add('hidden', 'opacity-0', 'scale-95');
}
});
// Close the dropdown if clicking outside
document.addEventListener('click', (event) => {
if (!dropdownButton.contains(event.target) && !dropdownMenu.contains(event.target)) {
if (!dropdownMenu.classList.contains('hidden')) {
dropdownButton.setAttribute('aria-expanded', 'false');
dropdownMenu.classList.remove('block', 'opacity-100', 'scale-100');
dropdownMenu.classList.add('hidden', 'opacity-0', 'scale-95');
}
}
});
// Close on Escape key
dropdownMenu.addEventListener('keydown', (event) => {
if (event.key === 'Escape') {
dropdownButton.setAttribute('aria-expanded', 'false');
dropdownMenu.classList.remove('block', 'opacity-100', 'scale-100');
dropdownMenu.classList.add('hidden', 'opacity-0', 'scale-95');
dropdownButton.focus();
}
});
</script>
관련 구성 요소
드롭다운 메뉴 컴포넌트
문서 또는 위키 사이트용으로 설계된 복잡하고 반응이 빠른 드롭다운 메뉴 구성 요소로, Ocean/Blue 색 구성표가 있는 깔끔하고 미니멀한 스위스/국제 타이포그래피 스타일을 특징으로 합니다. 다크 모드 지원 및 여러 대화형 요소가 포함되어 있습니다.
드롭다운 메뉴 컴포넌트
Tailwind CSS를 사용하는 머티리얼 디자인 원칙에 따라 설계된 반응형 드롭다운 메뉴 구성요소로, 어두운 모드를 지원하고 자리표시자 이미지를 포함합니다.