问题
I'm trying to get a drop down menu for my navbar so that when I hover over the tabs it opens a drop down menu with more options. Here is a fiddle of my code. The very final product should look like this, for now I just want to fix the drop down on hover part of it.
Here is a snippet of code im using in css to try and achieve this:
.dropdown {
display: none
}
.navbar-list li:hover .dropdown {
display: relative;
color: white;
text-decoration: none;
}
回答1:
Your HTML structure is wrong, and you need to use display: block on hover, not display: relative
But re: the HTML, a ul can't be a direct child of a ul. You need to nest the dropdowns in an li. That is not only correct markup, but it allows the hover to persist when you hover over an li that has nested menus. Otherwise, you would need to use li:hover + .dropdown to show the next .dropdown menu, but your :hover will stop once your mouse moves off of the li.
Also, each ul.dropdown that is in a single nested nav element could probably just be li's of a single ul, but what you have isn't incorrect, so I didn't change that.
.dropdown {
display: none
}
.navbar-tags:hover > .dropdown {
display: block;
color: white;
text-decoration: none;
}
.navbar-list a {
color: black;
text-decoration: none;
}
.navbar-tags {
margin: 20px;
}
.navbar-tags, .dropdown {
padding: 0;
list-style-type: none;
}
<ul class="navbar-list">
<li class="navbar-tags">
<a href="#">OUR DNA</a>
<ul class="dropdown">
<li><a href="">Risk</a></li>
</ul>
</li>
<li class="navbar-tags"><a href="#">PROGRAMS</a>
<ul class="dropdown">
<li><a href="">Adventure Sport</a></li>
</ul>
<ul class="dropdown">
<li><a href="">Entertainment</a></li>
</ul>
<ul class="dropdown">
<li><a href="">Collegiate</a></li>
</ul>
<ul class="dropdown">
<li><a href="">Individual</a></li>
</ul>
<ul class="dropdown">
<li><a href="">Commercial</a></li>
</ul>
</li>
<li class="navbar-tags"><a href="#">RESEARCH</a>
<ul class="dropdown">
<li><a href="">Corporate Survey</a></li>
</ul>
<ul class="dropdown">
<li><a href="">Individual Survey</a></li>
</ul>
</li>
<li class="navbar-tags"><a href="#">STORIES</a></li>
</ul>
回答2:
You are trying wrong approach, please change your css part
.navbar-list li:hover .dropdown {
display: block;
color: white;
text-decoration: none;
}
<ul class="navbar-list">
<li class="navbar-tags"><a href="#">OUR DNA</a>
<ul class="dropdown">
<li><a href="">Risk</a></li>
</ul>
</li>
update code
回答3:
1 ) Your HTML structure is wrong.
2) use display: block instead of display: relative.
Change your Code Like THis :
.dropdown {
display: none
}
.navbar-list li:hover > .dropdown {
display: block;
color: white;
text-decoration: none;
}
.navbar-list a {
color: black;
text-decoration: none;
}
.navbar-tags {
padding: 0;
list-style-type: none;
margin: 20px;
}
<ul class="navbar-list">
<li class="navbar-tags"><a href="#">OUR DNA</a>
<ul class="dropdown">
<li><a href="">Risk</a></li>
</ul>
</li>
<li class="navbar-tags"><a href="#">PROGRAMS</a>
<ul class="dropdown">
<li><a href="">Professional</a></li>
</ul>
<ul class="dropdown">
<li><a href="">Adventure Sport</a></li>
</ul>
<ul class="dropdown">
<li><a href="">Entertainment</a></li>
</ul>
<ul class="dropdown">
<li><a href="">Collegiate</a></li>
</ul>
<ul class="dropdown">
<li><a href="">Individual</a></li>
</ul>
<ul class="dropdown">
<li><a href="">Commercial</a></li>
</ul>
</li>
<li class="navbar-tags"><a href="#">RESEARCH</a>
<ul class="dropdown">
<li><a href="">Corporate Survey</a></li>
</ul>
<ul class="dropdown">
<li><a href="">Individual Survey</a></li>
</ul>
</li>
<li class="navbar-tags"><a href="#">STORIES</a></li>
</ul>
来源:https://stackoverflow.com/questions/44125218/expanding-drop-down-menu-on-hover-using-css