I have always heard that when you use absolute positioning, an element that you want to act as its parent requires position relative .
I tried to create a CSS drop-down menu, and I tried my best to make the drop-down menu elements stretch beyond the width of the main menu item, when I had its parent item, I wanted it to use set as relative ; the text in the drop-down menu items will simply be completed.
So I looked at other examples of menus to see how they did it, and the one I found didn’t even use any parent elements with position from relative , although they used absolute positioning like me.
Here is an example: http://purecssmenu.com/
So, I tried to remove my positioning and relative bingo - my problem disappeared. However, now I use absolute positioning, while none of the parents use relative positioning, they are all set to static .
So, I wonder how this makes sense - parents without relative do not return to the browser window?
If needed, here is my HTML:
<div class="navWrapper"> <div class="left"></div> <div class="nav"> <ul> <li class="home"><a href="/">Home</a></li> <li class="spacer"></li> <li class="about"><a href="about_us/">About Us</a></li> <li class="spacer"></li> <li class="trademark"><a href="freetrademarksearch/">Free Trademark Search</a></li> <li class="spacer"></li> <li class="services"> <a href="services/">Services</a> <ul class="sub"> <li><a href="">Trademark Search</a></li> <li><a href="">Prepare & File Trademark</a></li> <li><a href="">Trademark Infringement</a></li> </ul> </li> <li class="spacer"></li> <li class="testimonials"><a href="testimonials/">Testimonials</a></li> <li class="spacer"></li> <li class="more"><a href="javascript:void(0);">More Information</a></li> <li class="spacer"></li> <li class="contact"><a href="contact-us/">Contact Us</a></li> </ul> <div class="contentClear"></div> </div> <div class="right"></div> </div>
CSS
#header .navWrapper { width: 1004px; } #header .navWrapper .left { float: left; width: 4px; min-width: 4px; height: 47px; min-height: 47px; background: url('../images/nav-left-bg.png') left top no-repeat; } #header .navWrapper .nav { float: left; width: 994px; border-top: 1px solid #e0d0b4; border-left: 1px solid #e0d0b4; border-right: 1px solid #e0d0b4; border-bottom: 1px solid #e8dcc8; background: url('../images/nav-button-bg.png') left top repeat-x; } #header .navWrapper .nav ul { margin: 0 1px; display: block; } #header .navWrapper .nav li { float: left; display: block; height: 45px; font-family: OpenSansBold, Arial; font-size: 16px; line-height: 2.9; text-align: center; color: #646464; } #header .navWrapper .nav li.spacer { width: 2px; min-width: 2px; height: 45px; min-height: 45px; background: url('../images/nav-button-spacer-bg.png') left top no-repeat; } #header .navWrapper .nav li a, #header .navWrapper .nav li a:visited { display: block; height: 45px; padding: 0 20px; color: #646464; text-decoration: none; } #header .navWrapper .nav li a:hover, #header .navWrapper .nav li a:active, #header .navWrapper .nav li a:focus { color: #fff; background: url('../images/nav-button-bg.png') left bottom repeat-x; } #header .navWrapper .nav li.home { max-width: 86px; text-indent: -1px; } #header .navWrapper .nav li ul.sub { position: absolute; } #header .navWrapper .nav li ul.sub li { float: none; display: block; font-family: OpenSansSemibold, Arial; font-size: 14px; line-height: 2.3; height: auto; text-align: center; background-color: #f4771d; color: #fff; } #header .navWrapper .nav li ul.sub li a, #header .navWrapper .nav li ul.sub li a { color: #fff; height: auto; } #header .navWrapper .nav li ul.sub li a:hover, #header .navWrapper .nav li ul.sub li a:focus, #header .navWrapper .nav li ul.sub li a:active { background: #d66627; } #header .navWrapper .right { float: right; width: 4px; min-width: 4px; height: 47px; min-height: 47px; background: url('../images/nav-right-bg.png') left top no-repeat; }