Computer >> 컴퓨터 >  >> 프로그래밍 >> CSS

CSS만으로 마우스 오버 시 열리는 드롭다운 메뉴 만들기

자바스크립트 없이 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>

실행 결과

위 코드를 브라우저에서 실행하면 다음과 같이 보라색 배경의 '열기' 버튼이 화면에 표시됩니다.

CSS만으로 마우스 오버 시 열리는 드롭다운 메뉴 만들기

마우스 오버 시 드롭다운 메뉴 열림

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

CSS만으로 마우스 오버 시 열리는 드롭다운 메뉴 만들기

동작 원리 정리

이 드롭다운 메뉴가 작동하는 핵심 원리는 다음과 같습니다.

1. 기본 상태에서 메뉴 숨기기: .menu-contentdisplay: none;을 적용하여 평소에는 드롭다운 내용이 화면에 보이지 않도록 합니다.

2. hover 시 메뉴 표시하기: .dropdown-menu:hover .menu-content { display: block; } 규칙을 통해, 부모 요소인 .dropdown-menu 영역에 마우스가 올라가면 자식 요소인 메뉴 내용이 나타나도록 설정합니다.

3. 절대 위치 지정: .menu-contentposition: absolute;를 적용해 메뉴가 버튼 아래에 겹쳐서 펼쳐지도록 하고, z-index: 1;로 다른 콘텐츠 위에 표시되게 합니다.

4. 시각적 피드백 추가: 버튼과 링크에 각각 hover 스타일(배경색 변경)을 적용하면, 사용자가 현재 어떤 항목에 위치해 있는지 직관적으로 알 수 있어 사용성이 크게 향상됩니다.

이처럼 CSS의 :hover 가상 클래스와 display 속성 전환만으로도 별도의 스크립트 없이 간단하고 실용적인 드롭다운 메뉴를 완성할 수 있습니다.