منوی کشویی (Dropdown)
ساخت منوی کشویی زیبا و واکنشگرا با CSS خالص — بدون نیاز به JavaScript
منوی کشویی (Dropdown) چیست؟
منوی کشویی زیرمنویی است که با هاور یا کلیک باز میشود. برای صرفهجویی در فضا و سازماندهی لینکها استفاده میشود.
ساختار HTML
<div class="dropdown">
<button class="dropdown-btn">منو ▾</button>
<div class="dropdown-content">
<a href="#">گزینه ۱</a>
<a href="#">گزینه ۲</a>
<a href="#">گزینه ۳</a>
</div>
</div>
CSS اصلی Dropdown
.dropdown {
position: relative;
display: inline-block;
}
/* محتوای کشویی — مخفی */
.dropdown-content {
position: absolute;
top: 100%;
right: 0;
min-width: 200px;
background: white;
box-shadow: 0 8px 16px rgba(0,0,0,0.15);
border-radius: 8px;
padding: 8px 0;
opacity: 0;
visibility: hidden;
transform: translateY(-10px);
transition: all 0.3s;
z-index: 100;
}
/* نمایش با hover */
.dropdown:hover .dropdown-content {
opacity: 1;
visibility: visible;
transform: translateY(0);
}
/* گزینهها */
.dropdown-content a {
display: block;
padding: 10px 20px;
color: #333;
text-decoration: none;
transition: background 0.2s;
}
.dropdown-content a:hover {
background: #f0f0f0;
}
انواع Dropdown
| نوع | توضیح |
|---|---|
| Hover | با ماوس باز میشود |
| Click (CSS-only) | با checkbox hack |
| Mega Menu | منوی بزرگ چندستونه |
| Multi-level | کشویی تو در تو |
Dropdown با Checkbox Hack
<input type="checkbox" id="toggle" hidden>
<label for="toggle">منو</label>
<div class="menu">...</div>
#toggle:checked ~ .menu {
display: block;
}
بهترین شیوهها
position: relativeروی والد وabsoluteروی محتوا- از
opacity+visibilityبرای انیمیشن نرم استفاده کنید z-indexبالاتر از سایر محتوا- برای موبایل، از Click بهجای Hover استفاده کنید
- فاصله کلیک کافی (
padding) تعیین کنید
نکات مهم
- Dropdown با hover روی موبایل کار نمیکند — Click بهتر است
visibility: hiddenجلوی کلیک روی محتوای مخفی را میگیرد- برای دسترسپذیری، از
aria-expandedاستفاده کنید - منوی کشویی تو در تو پیچیده میشود — ساده نگه دارید
این مبحث بخشی از دوره آموزش کامل CSS است.