Reputation: 518
I have a drop down menu implemented in CSS, but my submenus are not all the same size. I'm not sure how to fix the problem, because adding the width property does not work.
Here is the menu CSS:
.submenu {
display: none;
}
#navlist li:hover ul {
display: block;
/*used to block display the dropdown */
position: absolute;
padding: 0px;
margin-top: 15px;
width: 200px;
}
#navlist li {
list-style: none;
margin: 0;
height: 30px;
}
#navlist li a {
color: #F1F6FE;
padding: 5px 15px;
margin-left: 3px;
border: 1px solid #0F3974;
border-bottom: none;
background: #2153AA url('../img/tab_bg.gif') bottom left repeat-x;
background-size: 80px 60px;
text-decoration: none;
}
#navlist li a:link {
color: #F1F6FE;
}
#navlist li a:visited {
color: #F1F6FE;
}
#navlist li a:hover {
color: #FFFFFF;
background: #3364BB;
border-color: #0F3974;
width: 200px;
}
#submenu li:hover {
display: flex;
/* display the dropdown */
position: absolute;
padding: 0px;
margin-top: 15px;
width: 200px;
}
<div id="navcontainer">
<ul id="navlist">
<li id="active">
<a href="index.php" id="current">Home</a>
</li>
<li>
<a href="#">Tools</a>
<ul class='submenu'>
<li><a href="hcm.php">HCM</a>
</li>
<li><a href="interlopers.php">Interlopers</a>
</li>
<li><a href="#">SFD</a>
</li>
<li><a href="#">Summary report</a>
</li>
<li><a href="#">Age</a>
</li>
</ul>
</li>
<li> <a href="#">Data</a>
<ul class='submenu'>
<li><a href="#">Catalogs</a>
</li>
<li><a href="#">Plots</a>
</li>
<li><a href="papers.php">Papers</a>
</li>
</ul>
</li>
<li> <a href="about.php">About</a>
</li>
<li> <a href="links.php">Links</a>
</li>
</ul>
</div>
Upvotes: 0
Views: 517
Reputation: 7015
As submenus are all in different size dont specify width
property. instead use display: block;
for all a
tags which adjusts the width according to the content.
Separate the hovered and non hovered submenu
style to make it hidden when not hovered by using
#navlist li ul {
display: none;
/*used to block display the dropdown */
position: absolute;
padding: 0px;
margin-top: 1px;
}
#navlist li:hover ul {
display: block;
}
remove the margin-top
to remove hovering issues
Demo:-
.submenu {
display: none;
}
#navlist li ul {
display: none;
/*used to block display the dropdown */
position: absolute;
padding: 0px;
margin-top: 1px;
}
#navlist li:hover ul {
display: block;
}
#navlist li {
list-style: none;
margin: 0;
height: 30px;
}
#navlist > li {
display: inline-block;
}
#navlist li a {
color: #F1F6FE;
padding: 5px 15px;
margin-left: 3px;
border: 1px solid #0F3974;
border-bottom: none;
background: #2153AA url('../img/tab_bg.gif') bottom left repeat-x;
background-size: 80px 60px;
text-decoration: none;
display: block;
}
#navlist li a:link {
color: #F1F6FE;
}
#navlist li a:visited {
color: #F1F6FE;
}
#navlist li a:hover {
color: #FFFFFF;
background: #3364BB;
border-color: #0F3974;
}
#submenu li:hover {
display: flex;
/* display the dropdown */
position: absolute;
padding: 0px;
margin-top: 15px;
}
<div id="navcontainer">
<ul id="navlist">
<li id="active">
<a href="index.php" id="current">Home</a>
</li>
<li>
<a href="#">Tools</a>
<ul class='submenu'>
<li><a href="hcm.php">HCM</a>
</li>
<li><a href="interlopers.php">Interlopers</a>
</li>
<li><a href="#">SFD</a>
</li>
<li><a href="#">Summary report</a>
</li>
<li><a href="#">Age</a>
</li>
</ul>
</li>
<li> <a href="#">Data</a>
<ul class='submenu'>
<li><a href="#">Catalogs</a>
</li>
<li><a href="#">Plots</a>
</li>
<li><a href="papers.php">Papers</a>
</li>
</ul>
</li>
<li> <a href="about.php">About</a>
</li>
<li> <a href="links.php">Links</a>
</li>
</ul>
</div>
</div>
Upvotes: 2