Reputation: 317
I am trying to create a rollover nav menu that has the secondary nav displayed as a horizontal line beneath the main nav when hovered over a primary nav option.
Here is a preview of how I'd like the links to look when hovered over a primary nav option.
Below is my code and below further is working demo link.
<div style="text-align:center; width:100%;">Stuff that goes above nav.<BR>More stuff.</div>
<div id="wrapper">
<div id="my-menu">
<ul class="nav" >
<li id="pri1"><a href="#">Primary 1</a>
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
<li><a href="#">Link 4</a></li>
<li><a href="#">Link 5</a></li>
<li><a href="#">Link 6</a></li>
</ul>
</li>
<li id="pri2"><a href="#">Primary 2</a>
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
<li><a href="#">Link 4</a></li>
<li><a href="#">Link 5</a></li>
<li><a href="#">Link 6</a></li>
</ul>
</li>
<li id="pri3"><a href="#">Primary 3</a>
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
<li><a href="#">Link 4</a></li>
<li><a href="#">Link 5</a></li>
<li><a href="#">Link 6</a></li>
</ul>
</li>
<li id="pri4"><a href="#">Primary 4</a>
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
<li><a href="#">Link 4</a></li>
<li><a href="#">Link 5</a></li>
<li><a href="#">Link 6</a></li>
</ul>
</li>
<li id="pri5"><a href="#">Primary 5</a>
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
<li><a href="#">Link 4</a></li>
<li><a href="#">Link 5</a></li>
<li><a href="#">Link 6</a></li>
</ul>
</li>
<li id="pri6"><a href="#">Primary 6</a>
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
<li><a href="#">Link 4</a></li>
<li><a href="#">Link 5</a></li>
<li><a href="#">Link 6</a></li>
</ul>
</li>
</ul>
<!-- hp navigation end -->
</div>
</div>
<div style="text-align:center; width:100%; margin-top:65px;">Stuff that below above nav.<BR>More stuff.</div>
#wrapper {
width:100%;
background: #ff6633;
margin 0 auto;
}
#nav{
margin 0 auto;
width:100%;
}
#nav ul {
list-style-type: none;
padding: 0;
}
.nav { text-align:center;}
#pri1 a {
background: #ff6633;
color: white;
width: 95px;
}
#pri2 a {
background: #ff6633;
color: white;
width: 137px;
}
#pri3 a {
background: #ff6633;
color: white;
width: 138px;
}
#pri4 a {
background: #ff6633;
color: white;
width: 142px;
}
#pri5 a {
background: #ff6633;
color: white;
width: 126px;
}
#pri6 a {
background: #ff6633;
color: white;
width: 77px;
}
.nav > li > a {
display: block;
height: 100%;
padding: 0px;
color: #000000;
text-decoration: none;
line-height: 32px;
outline: none;
border-right: 1px solid #D6D3D3
}
.nav > li:hover > a {
color:#333;
}
.nav > li {
padding: 0;
height: 30px;
font-family: Arial, Helvetica, sans-serif;
letter-spacing: -0.5px;
font-size: 14px;
}
.nav li {
display:inline-block;
}
.nav li > ul {
position: absolute;
display: none;
border-bottom: 0;
width: 1024px;
z-index: 9999;
}
#about {
}
.nav li > ul > li > a {
text-decoration: none;
color: #0f2992;
display: inline-block;
}
.nav li:hover > ul {
display: inline-block;
}
http://codepen.io/trevoray/pen/dPabKW
Upvotes: 0
Views: 422
Reputation: 1949
Basically you have to play with CSS position:absolute and width:100%
property at your submenu level to achieve what you want to achieve.
I have cleaned up your code just a little bit taking out all the things that are not needed for your particular problem and adding a couple classes for readability.
The fiddle for the solution ( rough draft) can be found here. Now style the way you want to adapt to the page accordingly.
The Code snippet follows...
#nav-wrapper {
width: 100%;
margin: 0 auto;
padding: 0;
min-height: 1.1em;
background: #ff6633;
display: table;
}
#navmenu {
width: 100%;
margin: 0;
padding: 0;
display: table-cell;
vertical-align: middle;
}
.nav {
margin: 0;
padding: 0;
/*height:20px;*/
}
.nav > li {
list-style: none;
display: block;
float: left;
margin: 0;
padding: 0;
width: 20%;
box-sizing: border-box;
text-align: center;
}
.submenu {
height: 20px;
display: none;
margin: 0;
padding: 0;
width: 100%;
position: absolute;
left: 0;
text-align: center;
}
.submenu > li {
list-style: none;
display: inline-block;
margin: 0 10px;
padding: 1px 20px;
box-sizing: border-box;
background: #ff6633;
}
.nav > li:hover .submenu {
display: block;
}
<div style="text-align:center; width:100%;">Stuff that goes above nav.
<BR/>More stuff.</div>
<div id="nav-wrapper">
<div id="navmenu">
<ul class="nav">
<li id="about"><a href="#">About</a>
<ul class="submenu">
<li><a href="#">Link 1</a>
</li>
<li><a href="#">Link 3</a>
</li>
<li><a href="#">Link 4</a>
</li>
</ul>
</li>
<li id="members"><a href="#">Members & Groups</a>
<ul class="submenu">
<li><a href="#">Link 1</a>
</li>
<li><a href="#">Link 2</a>
</li>
<li><a href="#">Link 3</a>
</li>
<li><a href="#">Link 4</a>
</li>
<li><a href="#">Link 5</a>
</li>
<li><a href="#">Link 6</a>
</li>
</ul>
</li>
<li id="careers"><a href="#">Careers</a>
<ul class="submenu">
<li><a href="#">Link 1</a>
</li>
<li><a href="#">Link 2</a>
</li>
<li><a href="#">Link 3</a>
</li>
<li><a href="#">Link 4</a>
</li>
</ul>
</li>
<li id="education"><a href="#">Education</a>
<ul class="submenu">
<li><a href="#">Link 1</a>
</li>
<li><a href="#">Link 2</a>
</li>
</ul>
</li>
<li id="mylinks"><a href="#">My Links</a>
<ul class="submenu">
<li><a href="#">Link 1</a>
</li>
<li><a href="#">Link 2</a>
</li>
<li><a href="#">Link 3</a>
</li>
<li><a href="#">Link 4</a>
</li>
<li><a href="#">Link 5</a>
</li>
<li><a href="#">Link 6</a>
</li>
</ul>
</li>
</ul>
<!-- hp navigation end -->
</div>
</div>
<div style="text-align:center; width:100%; margin-top:65px;">Stuff that below above nav.
<BR>More stuff.</div>
Hope this helps. Happy coding :)
Upvotes: 1