CSS Dropdowns
In this page:
.dropdown .dropdown-content {
display: none;
position: absolute;
}
.dropdown:hover .dropdown-content {
display: block;
}
Dropdown Concept
एक dropdown menu दो हिस्सों से बना होता है: एक visible trigger element (जैसे कोई button या link) और एक hidden content container। हम parent element की hover state इस्तेमाल करते हैं ताकि content container की display property को none से block में toggle किया जा सके।
उदाहरण: The Dropdown Concept
<style>
.dropdown-content {
display: none;
background: lightyellow;
padding: 8px;
border: 1px solid #ccc;
}
.dropdown:hover .dropdown-content {
display: block;
}
</style>
<div class="dropdown">
Menu
<div class="dropdown-content">Hidden until hovered</div>
</div>
Relative Parents के अंदर Absolute Positioning
अपने dropdown menu को खुलने पर बाकी page content को नीचे धकेलने से रोकने के लिए, आपको इसकी position property को absolute set करना होगा। यह sub-menu को normal page flow से हटा देता है और उसे दूसरे elements के ऊपर freely float होने देता है।
उदाहरण: Absolute Positioning inside Relative Parents
<style>
.dropdown {
position: relative;
}
.dropdown-content {
position: absolute;
display: none;
background: lightyellow;
padding: 8px;
border: 1px solid #ccc;
}
.dropdown:hover .dropdown-content {
display: block;
}
</style>
<div class="dropdown">
Menu
<div class="dropdown-content">Floats without pushing content down</div>
</div>
Hover Content Panel को Style करना
आप साफ़, multi-page navigation menus बनाने के लिए अपने dropdown menu के अंदर standard anchor links को group कर सकते हैं। इन links को full-width block displays इस्तेमाल करने के लिए style करना उन्हें click करना आसान बनाता है।
उदाहरण: Styling the Hover Content Panel
<style>
.dropdown {
position: relative;
display: inline-block;
}
.dropdown-content {
display: none;
position: absolute;
background: lightyellow;
border: 1px solid #ccc;
width: 150px;
}
.dropdown-content a {
display: block;
padding: 8px;
}
.dropdown:hover .dropdown-content {
display: block;
}
</style>
<div class="dropdown">
Menu
<div class="dropdown-content">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
</div>
</div>
Navigation Bars के अंदर Dropdowns
आप dropdown sub-menus को सीधे अपने horizontal navigation bars के अंदर integrate कर सकते हैं, जिससे आप tools या secondary pages के groups को एक ही साफ़ menu button के नीचे nest कर सकते हैं।
उदाहरण: Dropdowns inside Navigation Bars
<style>
nav {
background: #eee;
padding: 8px;
}
nav li {
display: inline-block;
position: relative;
}
nav .dropdown-content {
display: none;
position: absolute;
background: lightyellow;
border: 1px solid #ccc;
padding: 8px;
}
nav li:hover .dropdown-content {
display: block;
}
</style>
<nav>
<ul>
<li>Tools
<div class="dropdown-content">Sub Item</div>
</li>
</ul>
</nav>
Accessible Focus-Within Dropdowns
जो dropdown menus सिर्फ mouse hover पर खुलते हैं वे उन keyboard-only users के लिए inaccessible हैं जो Tab key इस्तेमाल करके navigate करते हैं। :focus-within pseudo-class इस्तेमाल करके, आप सुनिश्चित कर सकते हैं कि जब कोई user dropdown block के अंदर किसी भी element में tab करे तो आपके dropdowns automatically खुलें।
उदाहरण: Accessible Focus-Within Dropdowns
<style>
.dropdown-content {
display: none;
background: lightyellow;
border: 1px solid #ccc;
padding: 8px;
}
.dropdown:hover .dropdown-content,
.dropdown:focus-within .dropdown-content {
display: block;
}
</style>
<div class="dropdown">
<a href="#">Menu</a>
<div class="dropdown-content"><a href="#">Item</a></div>
</div>
- dropdown sub-menu पर position: absolute set करना भूल जाना, जिससे यह खुलने पर बाकी page content को नीचे धकेल देता है।
- parent container पर position: relative छोड़ देना, जो absolute sub-menu को screen के किनारे तक drift करा देता है।
- ऐसे dropdowns design करना जो सिर्फ hover पर खुलते हैं, mobile touch-screen और keyboard-only users को lock out करते हुए।
- Dropdown menus secondary content और links को साफ़ तरीके से छुपाते हैं, hover पर उन्हें automatically दिखाते हुए।
- अपने dropdown content को position: absolute set करें ताकि वह page elements को move किए बिना दूसरे content के ऊपर साफ़ तरीके से float करे।
- अपने dropdown menus को पूरी तरह accessible और keyboard navigation support करने वाला बनाने के लिए hover states को :focus-within pseudo-class के साथ जोड़ें।
Standard absolute-positioned dropdowns और basic hover state pseudo-classes हर web browser द्वारा natively supported हैं।
Chapter Quiz — Complete all 22 topics to unlock
0/22 topics done
Complete these topics first:
- CSS Combinators
- CSS Pseudo-classes
- CSS Pseudo-elements
- CSS Opacity
- CSS Navigation Bar
- CSS Vertical Navbar
- CSS Horizontal Navbar
- CSS Dropdowns
- CSS Advanced Dropdowns
- CSS Image Gallery
- CSS Image Sprites
- CSS Attribute Selectors
- CSS Forms
- CSS Counters
- CSS Specificity
- CSS Specificity Hierarchy
- CSS Variables
- CSS !important
- CSS Box Sizing
- CSS Media Queries
- CSS Pointer Events
- CSS Outline