자바스크립트 없이 CSS의 :hover 선택자만 사용하면, 버튼에 마우스를 올렸을 때 자동으로 열리는 드롭다운 메뉴를 손쉽게 구현할 수 있습니다. 아래 예제 코드를 통해 그 방법을 살펴보겠습니다.
전체 예제 코드
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style>
.menu-btn {
background-color: #7e32d4;
color: white;
padding: 16px;
font-size: 20px;
font-weight: bolder;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
border: none;
}
.dropdown-menu {
position: relative;
display: inline-block;
}
.menu-content {
display: none;
position: absolute;
background-color: #017575;
min-width: 160px;
z-index: 1;
}
.links {
color: rgb(255, 255, 255);
padding: 12px 16px;
text-decoration: none;
display: block;
font-size: 18px;
font-weight: bold;
border-bottom: 1px solid black;
}
.links:hover {
background-color: rgb(8, 107, 46);
}
.dropdown-menu:hover .menu-content {
display: block;
}
.dropdown-menu:hover .menu-btn {
background-color: #3e8e41;
}
</style>
</head>
<body>
<h2>아래 드롭다운 버튼에 마우스를 올려보세요</h2>
<div class="dropdown-menu">
<button class="menu-btn">열기</button>
<div class="menu-content">
<a class="links" href="#">Contact Us</a>
<a class="links" href="#">Visit Us</a>
<a class="links" href="#">About Us</a>
</div>
</div>
</body>
</html>실행 결과
위 코드를 브라우저에서 실행하면 다음과 같이 보라색 배경의 '열기' 버튼이 화면에 표시됩니다.

마우스 오버 시 드롭다운 메뉴 열림
'열기' 버튼 위에 마우스 커서를 올리면, 아래 이미지처럼 숨겨져 있던 드롭다운 메뉴가 나타나며 각 링크 항목을 선택할 수 있게 됩니다.

동작 원리 정리
이 드롭다운 메뉴가 작동하는 핵심 원리는 다음과 같습니다.
1. 기본 상태에서 메뉴 숨기기: .menu-content에 display: none;을 적용하여 평소에는 드롭다운 내용이 화면에 보이지 않도록 합니다.
2. hover 시 메뉴 표시하기: .dropdown-menu:hover .menu-content { display: block; } 규칙을 통해, 부모 요소인 .dropdown-menu 영역에 마우스가 올라가면 자식 요소인 메뉴 내용이 나타나도록 설정합니다.
3. 절대 위치 지정: .menu-content에 position: absolute;를 적용해 메뉴가 버튼 아래에 겹쳐서 펼쳐지도록 하고, z-index: 1;로 다른 콘텐츠 위에 표시되게 합니다.
4. 시각적 피드백 추가: 버튼과 링크에 각각 hover 스타일(배경색 변경)을 적용하면, 사용자가 현재 어떤 항목에 위치해 있는지 직관적으로 알 수 있어 사용성이 크게 향상됩니다.
이처럼 CSS의 :hover 가상 클래스와 display 속성 전환만으로도 별도의 스크립트 없이 간단하고 실용적인 드롭다운 메뉴를 완성할 수 있습니다.