CSS not filling entire width - html

I have a navigation tab which is only taking up half of the width which I require, I need it to take up 100% width however it does not. I have looked at around this site and google could not get it working like I want it. IThe navigation ie the black background should take up 100% of the width however it does not. any ideas.
nav ul ul {
display: none;
}
nav ul li:hover > ul {
display: block;
}
nav ul {
background: #1e1d1d;
background: linear-gradient(top, #1e1d1d 0%, #bbbbbb 100%);
background: -moz-linear-gradient(top, #1e1d1d 0%, #bbbbbb 100%);
background: -webkit-linear-gradient(top, #1e1d1d 0%,#bbbbbb 100%);
box-shadow: 0px 0px 9px rgba(0,0,0,0.15);
padding: 0 20px;
border-radius: 10px;
list-style: none;
position: relative;
display: inline-table;
}
nav ul:after {
content: ""; clear: both; display: block;
}
nav ul li {
float: left;
}
nav ul li:hover {
background: #f7f7f7;
background: linear-gradient(top, #f7f7f7 0%, #5f6975 40%);
background: -moz-linear-gradient(top, #f7f7f7 0%, #5f6975 40%);
background: -webkit-linear-gradient(top, #f7f7f7 0%,#5f6975 40%);
}
nav ul li:hover a {
color: #ff0000;
}
nav ul li a {
display: block; padding: 25px 40px;
color: #f7f7f7; text-decoration: none;
}
nav ul ul {
background: #f7f7f7; border-radius: 0px; padding: 0;
position: absolute; top: 100%;
}
nav ul ul li {
float: none;
position: relative;
}
nav ul ul li a {
padding: 15px 40px;
}
nav ul ul li a:hover {
background: #888484;
color: #ff0000;
}
nav ul ul ul {
position: absolute; left: 100%; top:0;
}
<nav>
<ul>
<li>Basin & Sinks</li>
<li>Showers
<ul>
<li>Shower Trays</li>
<li>Shower Glass
<ul>
<li>Frosted</li>
<li>Clear</li>
</ul>
</li>
</ul>
</li>
<li>Bathroom Accessories
<ul>
<li>Plugs</li>
<li>Toilet Paper</li>
</ul>
</li>
<li>Toilets</li>
</ul>
</nav>
https://jsfiddle.net/1nzot5rq/1/
have tried several links and have tried width: 100%, max-width: 100%; however I have had no luck.

Just add width: 100%; box-sizing: border-box; to nav ul like this: https://jsfiddle.net/d8ch5qer/
nav ul ul {
display: none;
}
nav ul li:hover > ul {
display: block;
}
nav ul {
background: #1e1d1d;
background: linear-gradient(top, #1e1d1d 0%, #bbbbbb 100%);
background: -moz-linear-gradient(top, #1e1d1d 0%, #bbbbbb 100%);
background: -webkit-linear-gradient(top, #1e1d1d 0%, #bbbbbb 100%);
box-shadow: 0px 0px 9px rgba(0, 0, 0, 0.15);
padding: 0 20px;
border-radius: 10px;
list-style: none;
position: relative;
display: inline-table;
width: 100%;
box-sizing: border-box;
}
nav ul:after {
content: "";
clear: both;
display: block;
}
nav ul li {
float: left;
}
nav ul li:hover {
background: #f7f7f7;
background: linear-gradient(top, #f7f7f7 0%, #5f6975 40%);
background: -moz-linear-gradient(top, #f7f7f7 0%, #5f6975 40%);
background: -webkit-linear-gradient(top, #f7f7f7 0%, #5f6975 40%);
}
nav ul li:hover a {
color: #ff0000;
}
nav ul li a {
display: block;
padding: 25px 40px;
color: #f7f7f7;
text-decoration: none;
}
nav ul ul {
background: #f7f7f7;
border-radius: 0px;
padding: 0;
position: absolute;
top: 100%;
}
nav ul ul li {
float: none;
position: relative;
}
nav ul ul li a {
padding: 15px 40px;
}
nav ul ul li a:hover {
background: #888484;
color: #ff0000;
}
nav ul ul ul {
position: absolute;
left: 100%;
top: 0;
}
<nav>
<ul>
<li>Basin & Sinks</li>
<li>Showers
<ul>
<li>Shower Trays</li>
<li>Shower Glass
<ul>
<li>Frosted</li>
<li>Clear</li>
</ul>
</li>
</ul>
</li>
<li>Bathroom Accessories
<ul>
<li>Plugs</li>
<li>Toilet Paper</li>
</ul>
</li>
<li>Toilets</li>
</ul>
</nav>

Add:
nav ul {
width: 100%;
display:block;
}
But even with that you will have problem managing you columns to fit all width. You can use JS to calculate each width or use display: table for nav ul and display: table-cell for you ul li's

If you're looking on Chrome, Chrome adds 40px of padding as follows to <ul>'s:
-webkit-padding-start: 40px;
This is making the <ul> extend over the width you define.
There's 2 ways of overcoming this:
1. Remove all padding, including browser defaults
https://jsfiddle.net/pzod450b/1/
Simply add -webkit-padding-start: 0. On top of that, you've also added 20px of padding either side of the <ul>, remove this
CSS:
nav ul {
background: #1e1d1d;
background: linear-gradient(top, #1e1d1d 0%, #bbbbbb 100%);
background: -moz-linear-gradient(top, #1e1d1d 0%, #bbbbbb 100%);
background: -webkit-linear-gradient(top, #1e1d1d 0%,#bbbbbb 100%);
box-shadow: 0px 0px 9px rgba(0,0,0,0.15);
border-radius: 10px;
list-style: none;
position: relative;
display: inline-table;
width: 100%;
}
2. Use box-sizing: border-box
Using this method will ensure that the browser calculates all padding/border applied to an element within it's final width:
https://jsfiddle.net/u1vzag3b/
nav ul {
background: #1e1d1d;
background: linear-gradient(top, #1e1d1d 0%, #bbbbbb 100%);
background: -moz-linear-gradient(top, #1e1d1d 0%, #bbbbbb 100%);
background: -webkit-linear-gradient(top, #1e1d1d 0%,#bbbbbb 100%);
box-shadow: 0px 0px 9px rgba(0,0,0,0.15);
border-radius: 10px;
list-style: none;
position: relative;
display: inline-table;
width: 100%;
box-sizing: border-box;
}
You'll notice in both cases, you should add width: 100% to nav ul.

Related

CSS Vertical align center for text inside of ListItem

I want to center vertical the text of the ListItem Home, About, FAQ and Kontakt.
All 4 ListItems should be a bit lower
I use
nav {
font-family: Helvetica, Arial, sans-serif;
font-size: 18px;
/*line-height: 24px;*/
text-align: center;
margin-top: 20px;
float: right;
}
nav ul ul {
display: none;
margin: 0px;
}
nav ul li:hover > ul {
display: block;
}
nav ul {
background: #FFC400;
background: -webkit-linear-gradient(top, #e05f03 0%, #ca5603 100%);
background: -moz-linear-gradient(top, #e05f03 0%, #ca5603 100%);
background: -o-linear-gradient(top, #e05f03 0%, #ca5603 100%);
background: -ms-linear-gradient(top, #e05f03 0%, #ca5603 100%);
background: linear-gradient(top, #e05f03 0%, #ca5603 100%);
box-shadow: 0px 0px 9px rgba(0, 0, 0, 0.15);
padding: 0 10px;
border-radius: 10px;
list-style: none;
position: relative;
display: inline-table;
}
nav ul:after {
content: "";
clear: both;
display: block;
}
nav ul li {
float: left;
width: 150px;
height: 60px;
}
nav ul li:hover {
background: #4b545f;
background: -moz-linear-gradient(top, #FFC400 0%, #FFA600 100%);
background: -o-linear-gradient(top, #FFC400 0%, #FFA600 100%);
background: -ms-linear-gradient(top, #FFC400 0%, #FFA600 100%);
background: linear-gradient(top, #FFC400 0%, #FFA600 100%);
}
nav ul li:hover a {
color: #fff;
text-decoration: none;
}
nav ul li a {
display: block;
padding: 10px 10px;
color: white;
text-decoration: none;
}
nav ul ul {
/*background: #5f6975;*/
border-radius: 0px;
padding: 0;
position: absolute;
top: 100%;
}
nav ul ul li {
float: none;
width: 120px;
position: relative;
}
nav ul ul li a {
padding: 15px 20px;
color: #fff;
}
nav ul ul li a:hover {
background: #4b545f;
}
<nav>
<ul>
<li>Home
</li>
<li>
Large word need 2 lines
<ul>
<li>Photoshop
</li>
<li>Illustrator
</li>
<li>Illustrator
</li>
<li>Illustrator
</li>
<li>Illustrator
</li>
<li>Illustrator
</li>
</ul>
</li>
<li>
About
<ul>
<li>Web Design
</li>
<li>User Experience
</li>
</ul>
</li>
<li>FAQ
</li>
<li>Kontakt
</li>
</ul>
</nav>
Try it
nav ul li {
float: left;
width: 150px;
height: 60px;
line-height:40px;
vertical-align:middle;
}
Try to take advantage of flexbox:
https://jsfiddle.net/2nd64LtL/
The li items become flex containers and get display:flex and flex-direction: column;, the included a elements get margin: auto, which centers them vertically along the flex-axis:
nav ul li {
float: left;
width: 150px;
height: 60px;
display:flex;
flex-direction: column;
}
nav ul li a {
padding: 10px 10px;
color: white;
text-decoration: none;
margin: auto;
}
Removed float and height styles from nav ul li, selectors > added to target immediate children and not effect submenu items.
nav > ul > li {
width: 150px;
vertical-align: middle;
display: inline-block;
}
nav {
font-family: Helvetica, Arial, sans-serif;
font-size: 18px;
/*line-height: 24px;*/
text-align: center;
margin-top: 20px;
float: right;
}
nav ul ul {
display: none;
margin: 0px;
}
nav ul li:hover > ul {
display: block;
}
nav ul {
background: #FFC400;
background: -webkit-linear-gradient(top, #e05f03 0%, #ca5603 100%);
background: -moz-linear-gradient(top, #e05f03 0%, #ca5603 100%);
background: -o-linear-gradient(top, #e05f03 0%, #ca5603 100%);
background: -ms-linear-gradient(top, #e05f03 0%, #ca5603 100%);
background: linear-gradient(top, #e05f03 0%, #ca5603 100%);
box-shadow: 0px 0px 9px rgba(0, 0, 0, 0.15);
padding: 0 10px;
border-radius: 10px;
list-style: none;
position: relative;
display: inline-table;
}
nav ul:after {
content: "";
clear: both;
display: block;
}
nav ul li {
width: 150px;
vertical-align: middle;
display: inline-block;
}
nav ul li:hover {
background: #4b545f;
background: -moz-linear-gradient(top, #FFC400 0%, #FFA600 100%);
background: -o-linear-gradient(top, #FFC400 0%, #FFA600 100%);
background: -ms-linear-gradient(top, #FFC400 0%, #FFA600 100%);
background: linear-gradient(top, #FFC400 0%, #FFA600 100%);
}
nav ul li:hover a {
color: #fff;
text-decoration: none;
}
nav ul li a {
display: block;
padding: 10px 10px;
color: white;
text-decoration: none;
}
nav ul ul {
/*background: #5f6975;*/
border-radius: 0px;
padding: 0;
position: absolute;
top: 100%;
}
nav ul ul li {
float: none;
width: 120px;
position: relative;
}
nav ul ul li a {
padding: 15px 20px;
color: #fff;
}
nav ul ul li a:hover {
background: #4b545f;
}
<nav>
<ul>
<li>Home
</li>
<li>
Large word need 2 lines
<ul>
<li>Photoshop
</li>
<li>Illustrator
</li>
<li>Illustrator
</li>
<li>Illustrator
</li>
<li>Illustrator
</li>
<li>Illustrator
</li>
</ul>
</li>
<li>
About
<ul>
<li>Web Design
</li>
<li>User Experience
</li>
</ul>
</li>
<li>FAQ
</li>
<li>Kontakt
</li>
</ul>
</nav>
https://jsfiddle.net/v2opnsqt/6/

How to make dropdown navbar full width

I have a nav bar with following HTML:
<nav id="menu-bar">
<ul>
<li><a href='http://sunilpatro1985.blogspot.in/' >Home</a></li>
<li><a href='http://sunilpatro1985.blogspot.in/search/label/SeleniumTesting'>Selenium</a>
<ul>
<li><a href='http://sunilpatro1985.blogspot.in/2015/04/selenium-testng.html'>TestNG</a></li>
<li><a href='http://sunilpatro1985.blogspot.com/2015/03/selenium-result-report-testng-ant.html'>ANT Reporting</a></li>
</ul>
</li>
<li><a href='http://sunilpatro1985.blogspot.in/search/label/SoftwareTesting'>TestingConcepts</a></li>
<li><a href='http://sunilpatro1985.blogspot.in/search/label/BasicJava' >JavaBasics</a></li>
<li><a href='http://sunilpatro1985.blogspot.in/search/label/WindowsOS' >Windows</a></li>
<li><a href='http://sunilpatro1985.blogspot.in/p/demo.html' >Demo</a></li>
</ul></nav>
and the CSS I used:
#menu-bar {position: fixed; top: 0px; left: 0px; z-index: 999;height:0px;}
#menu-bar,#menu-bar a {
text-align: center;
margin: 0px 0px;
border:none;
}
#menu-bar ul ul {
display: none;
}
#menu-bar ul li:hover > ul {
display: block;
}
#menu-bar ul {
background: #efefef;
background: linear-gradient(top, #efefef 0%, #bbbbbb 100%);
background: -moz-linear-gradient(top, #efefef 0%, #bbbbbb 100%);
background: -webkit-linear-gradient(top, #efefef 0%,#bbbbbb 100%);
box-shadow: 0px 0px 9px rgba(0,0,0,0.15);
padding: 0 20px;
border-radius: 7px;
list-style: none;
position: relative;
display: inline-table;
overflow:visible;
}
#menu-bar ul:after {
content: ""; clear: both; display: block;
}
#menu-bar ul li {
float: left;
}
#menu-bar ul li:hover {
background: #4b545f;
background: linear-gradient(top, #4f5964 0%, #5f6975 40%);
background: -moz-linear-gradient(top, #4f5964 0%, #5f6975 40%);
background: -webkit-linear-gradient(top, #4f5964 0%,#5f6975 40%);
}
#menu-bar ul li:hover a {
color: #fff;
}
#menu-bar ul li a {
display: block; padding: 15px 30px;
color: #757575; text-decoration: none;
}
#menu-bar ul ul {
background: #5f6975; border-radius: 0px; padding: 0;
position: absolute; top: 100%;
}
#menu-bar ul ul li {
float: none;
border-top: 1px solid #6b727c;
border-bottom: 1px solid #575f6a;
position: relative;
}
#menu-bar ul ul li a {
padding: 15px 30px;
color: #fff;
}
#menu-bar ul ul li a:hover {
background: #4b545f;
}
#menu-bar ul ul ul {
position: absolute; left: 100%; top:0;
}
This above menu bar only covers 80% of my desktop screen. How can I make it full width? I tried some options as mentioned in other Stack Overflow answers, but nothing helped completely. Please help me make menu bar full width on screen.
It doesn't look like you're actually setting the nav element to be 100% of the width in the CSS. Try adding this:
#menu-bar { width: 95%;}
#menu-bar > ul {width: 100% }
That worked in jsFiddle but you may need to adjust the percentage for menu-bar (the first line).
Try this code:
#menu-bar{width:100%}
#menu-bar ul{width:100%}
Just add right: 0 to #menu-bar:
#menu-bar {
position: fixed;
top: 0;
left: 0;
right: 0; /* <-- here */
z-index: 999;
height: 0; /* why is the height "0"? */
}

How to get list item to fill parent un-ordered list

I am trying to make the list items in my un-ordered list fill the entire list. Because I have one list item that is two words, it is making the ul larger, but the others do not fill the space and I can only roll over and see the 2nd ul and am not able to get my mouse to access those buttons.
Here is the HTML
<div id="body_left_nav">
<nav>
<ul>
<li>Property Management
<ul>
<li>Commercial</li>
<li>Multi-Family</li>
</ul>
</li>
<li>Brokerage
<ul>
<li>Commercial</li>
<li>Multi-Family</li>
</ul>
</li>
<li>Leasing
<ul>
<li>Commercial</li>
</ul>
</li>
<li>Consulting
<ul>
<li>Commercial</li>
<li>Multi-Family</li>
</ul>
</li>
</ul>
</nav>
</div>
And the CSS
#body_left_nav{
width: 100%;
margin-left: 10px;
height: 100%;
}
#body_left_nav a {
font-weight: bold;
color: #000;
font-size: 14px;
}
#body_left_nav ul {
width: 100%;
background: #efefef;
background: linear-gradient(top, #efefef 0%, #004A65 100%);
background: -moz-linear-gradient(top, #efefef 0%, #004A65 100%);
background: -webkit-linear-gradient(top, #C4DAE8 0%,#004A65 100%);
box-shadow: 0px 0px 9px rgba(0,0,0,0.15);
border-radius: 10px;
list-style: none;
position: relative;
display: inline-table;
}
#body_left_nav ul li {
float: left;
width: 25%;
}
#body_left_nav ul li:hover {
background: #4b545f;
background: linear-gradient(top, #4f5964 0%, #5f6975 40%);
background: -moz-linear-gradient(top, #4f5964 0%, #5f6975 40%);
background: -webkit-linear-gradient(top, #C4DAE8 0%,#004A65 40%);
}
#body_left_nav ul li a {
display: block;
padding: 20px;
color: #fff;
text-decoration: none;
text-align: center;
}
#body_left_nav ul li a:visited {
color: #fff;
}
#body_left_nav ul li:hover a {
color: #fff;
}
#body_left_nav ul li:hover > ul {
display: block;
top: 100%;
}
#body_left_nav ul:after {
clear: both;
display: block;
}
#body_left_nav ul ul {
width: 25%;
background: #5f6975;
border-radius: 0px;
position: absolute;
display: none;
}
#body_left_nav ul ul li {
width: 100%;
float: none;
background: #efefef;
background: linear-gradient(top, #efefef 0%, #004A65 100%);
background: -moz-linear-gradient(top, #efefef 0%, #004A65 100%);
background: -webkit-linear-gradient(top, #C4DAE8 0%,#004A65 100%);
box-shadow: 0px 0px 9px rgba(0,0,0,0.15);
border-top: 1px solid #D32026;
border-bottom: 1px solid #D32026;
position: relative;
}
#body_left_nav ul ul li a {
text-align: center;
color: #fff;
}
EDIT: Here is the jsfiddle http://jsfiddle.net/bv9j8ra5/
I don't know why the whole navigation and the ul ul are indented. It doesn't do that on my site but I still have the problem with the list item not filling the parent ul.
EDIT: This also might help. Here is an image of whats happening. I don't have a gap on "Property Management", but I have one on the other 3. [1]: http://i.stack.imgur.com/NbDnW.png
live Demo or
full view Demo
You just need a reset
*{box-sizing:border-box;padding:0;margin:0;}
Full code
*{box-sizing:border-box;padding:0;margin:0;}
#body_left_nav {
width: 100%;
height: 100%;
}
#body_left_nav a {
font-weight: bold;
color: #000;
font-size: 14px;
}
#body_left_nav ul {
width: 100%;
background: #efefef;
background: linear-gradient(top, #efefef 0%, #004A65 100%);
background: -moz-linear-gradient(top, #efefef 0%, #004A65 100%);
background: -webkit-linear-gradient(top, #C4DAE8 0%, #004A65 100%);
box-shadow: 0px 0px 9px rgba(0, 0, 0, 0.15);
border-radius: 10px;
list-style: none;
position: relative;
display: inline-table;
}
#body_left_nav ul li {
float: left;
width: 25%;
}
#body_left_nav ul li:hover {
background: #4b545f;
background: linear-gradient(top, #4f5964 0%, #5f6975 40%);
background: -moz-linear-gradient(top, #4f5964 0%, #5f6975 40%);
background: -webkit-linear-gradient(top, #C4DAE8 0%, #004A65 40%);
}
#body_left_nav ul li a {
display: block;
padding: 20px;
color: #fff;
text-decoration: none;
text-align: center;
}
#body_left_nav ul li a:visited {
color: #fff;
}
#body_left_nav ul li:hover a {
color: #fff;
}
#body_left_nav ul li:hover > ul {
display: block;
top: 100%;
}
#body_left_nav ul:after {
clear: both;
display: block;
}
#body_left_nav ul ul {
width: 25%;
background: #5f6975;
border-radius: 0px;
position: absolute;
display: none;
}
#body_left_nav ul ul li {
width: 100%;
float: none;
background: #efefef;
background: linear-gradient(top, #efefef 0%, #004A65 100%);
background: -moz-linear-gradient(top, #efefef 0%, #004A65 100%);
background: -webkit-linear-gradient(top, #C4DAE8 0%, #004A65 100%);
box-shadow: 0px 0px 9px rgba(0, 0, 0, 0.15);
border-top: 1px solid #D32026;
border-bottom: 1px solid #D32026;
position: relative;
}
#body_left_nav ul ul li a {
text-align: center;
color: #fff;
}
<div id="body_left_nav">
<nav>
<ul>
<li>Property Management
<ul>
<li>Commercial
</li>
<li>Multi-Family
</li>
</ul>
</li>
<li>Brokerage
<ul>
<li>Commercial
</li>
<li>Multi-Family
</li>
</ul>
</li>
<li>Leasing
<ul>
<li>Commercial
</li>
</ul>
</li>
<li>Consulting
<ul>
<li>Commercial
</li>
<li>Multi-Family
</li>
</ul>
</li>
</ul>
</nav>
</div>
This is happening because you need to remove the margin and padding from the nested ul.
#body_left_nav ul ul {
width: 25%;
background: #5f6975;
border-radius: 0px;
position: absolute;
display: none;
margin: 0;
padding: 0;
EDIT:
There are several approaches on this, you can do it statically with padding.
Here is the applicable CSS:
#body_left_nav ul li {
float: left;
width: 25%;
height: 50px;
}
#body_left_nav ul li a {
display: block;
padding: 1.2em 0;
color: #fff;
text-decoration: none;
text-align: center;
}
Here is the new fiddle: http://jsfiddle.net/bv9j8ra5/3/
EDIT #2:
Or you can do it dynamically with relative positioning.
CSS:
#body_left_nav ul li {
float: left;
width: 25%;
height: 50px;
}
#body_left_nav ul li a {
display: block;
color: #fff;
text-decoration: none;
text-align: center;
position: relative;
top: 50%;
transform: translateY(-50%);
}
Here is the fiddle: http://jsfiddle.net/bv9j8ra5/5/

How to create nested css horizontal menu?

I have view a post from the stakoverflow site but it does not exactly address my issue. The problem I have is that my navigation menu width is set to 100% and I'm not sure how to control the sub or nested UL menu. Here's the jsFiddle link. The sub menu under "CHARACTER" is the problematic menu I'm working now. If I resize the browser window then the sub-menu's position changes.
<nav>
<ul>
<li>HOME</li>
<li>CHARACTER
<ul>
<li>Bill</li>
<li>Till</li>
<li>Cill</li>
<li>Will</li>
</ul>
</li>
<li>HISTORY</li>
<li>STORY</li>
</ul>
</nav>
Any help is much appreciated.
Try to add "float: left; width: 100%;" into your ul in css. So the HTML is:
<nav>
<ul>
<li>HOME</li>
<li>CHARACTER
<ul class="sub-menu">
<li>Bill</li>
<li>Till</li>
<li>Cill</li>
And here is the css:
/*THIS IS THE NAVATION MENU */
nav {
list-style:none;
text-align:center;
width: 100%;/*margin:20px;*/
padding: 0;
margin: 0 auto;
}
nav ul ul {
display: none;
}
nav ul li:hover > ul {
display: block;
z-index: 999;
}
nav ul {
float: left;
width:100%;
background: #efefef;
background: linear-gradient(top, #1295D8 0%, #005581 100%);
background: -moz-linear-gradient(top, #1295D8 0%, #005581 100%);
background: -webkit-linear-gradient(top, #1295D8 0%, #005581 100%);
box-shadow: 0px 0px 9px rgba(0,0,0,0.15);
/*padding: 0 20px;
border-radius: 10px; */
list-style: none;
position: relative;/*display: inline-table;*/
}
nav ul:after {
content: "";
clear: both;
display: block;
width:100%;
margin:0 auto;
}
nav ul li {
/*float: left;*/
display: inline;
padding: 13px 20px;
position: relative;
}
nav ul li:hover {
background: #4b545f;
background: linear-gradient(top, #78A4BF 0%, #2E4559 40%);
background: -moz-linear-gradient(top, #78A4BF 0%, #2E4559 40%);
background: -webkit-linear-gradient(top, #78A4BF 0%, #2E4559 40%);
}
nav ul li:hover a {
color: #fff;
}
nav ul li a {
display: inline-block;
padding: 15px 20px;
color: #fff;
text-decoration: none;
}
nav ul .sub-menu {
background: #5f6975;
border-radius: 0px;
padding: 0;
position: absolute;
top: 100%;
left: 0%;
float: left;
}
nav ul ul li {
padding: 13px 0;
float: none;
border-top: 1px solid #6b727c;
border-bottom: 1px solid #575f6a;
position: relative;
}
nav ul ul li a {
/*padding: 13px 20px;*/
color: #fff;
}
nav ul ul li a:hover {
/*background: #4b545f;*/
background: #4b545f;
background: linear-gradient(top, #78A4BF 0%, #2E4559 40%);
background: -moz-linear-gradient(top, #78A4BF 0%, #2E4559 40%);
background: -webkit-linear-gradient(top, #78A4BF 0%, #2E4559 40%);
/*padding: 13px 20px;*/
}
nav ul ul ul {
position: absolute;
left: 100%;
top: 0;
}
If I understood what you meant correctly then this should be the fix you need.
By adding 2 css rules things should be fixed probably.
nav ul li {
position: relative;
white-space: nowrap;
}
Then it will result in the sub-menu looking like this. http://snag.gy/MFEvw.jpg.
Here's the Fiddle
--
Explaining this really quick from my experience with menus(most of the time they are a pain)
The problem here is that the position: relative; is not set on the <li> inside the <ul>, But it's set on the <ul> itself, That's why the submenu keeps moving to the sides on resize, By setting position: relative; on the <li> inside the <ul> you make the submenu positioned relatively to the <li> instead of the <ul>.
You can read more about the white-space rule over at CSS Tricks, Great article.
I hope This will help you achieve what you need, Good Luck.

My tabs are not working as they should

I just finished writing my code for my navigation tabs using HTML5 and CSS3, but I'm having an issue! The tabs work perfectly in notepad, but when I put it in my website, it just doesn't work.
This is my CSS code:
nav ul ul {
display: none;
}
nav ul li:hover > ul {
display: block;
}
nav ul {
background: #efefef;
background: linear-gradient(top, #D8D8D8 10%, #D0D0D0 90%);
background: -moz-linear-gradient(top, #D8D8D8 10%, #D0D0D0 90%);
background: -webkit-linear-gradient(top, #D8D8D8 10%, #D0D0D0 90%);
box-shadow: 0px 0px 9px 0px rgba(0,0,0,0.15);
padding: 0px 20px;
border-radius: 10px;
list-style: none;
position: relative;
display: inline-table;
}
nav ul:after {
content: ""; clear: both; display: block;
}
li {
float: left;
}
nav ul li:hover {
background: #4b545f;
background: linear-gradient(top, #4f5964 0%, #5f6975 40%);
background: -moz-linear-gradient(top, #4f5964 0%, #5f6975 40%);
background: -webkit-linear-gradient(top, #4f5964 0%,#5f6975 40%);
}
nav ul li:hover a {
color: #fff;
}
nav ul li a {
display: block; padding: 10px 40px;
color: #757575; text-decoration: none;
font-family:arial;
}
nav ul ul {
background: #5f6975; border-radius: 0px; padding: 0px;
position: absolute; top: 100%;
}
nav ul ul li {
float: none;
border-top: 1px solid #6b727c;
border-bottom: 1px solid #575f6a;
position: relative;
}
nav ul ul li a {
padding: 10px 40px;
color: #fff;
font-family:arial; font-weight:900;
}
nav ul ul li a:hover {
background: #4b545f;
}
nav ul ul ul {
position: absolute; left: 100%; top:0;
}
The following is the HTML code I use to place them in the website:
<center><nav>
<ul>
<li>Home</li>
<li>Arcade
<ul>
<li>Action</li>
<li>Arcade</li>
<li>Puzzle</li>
<li>Vehicle</li>
<li>Violence</li>
<li>Defense</li>
<li>Point N Click</li>
<li>RPG</li>
</ul>
</li>
<li>Watch
<ul>
<li>TV Shows</li>
<li>Movies</li>
</ul>
</li>
<li>Extras
<ul>
<li>News</li>
<li>Updates</li>
</ul>
</li>
<li>Support</li>
</ul>
</nav></center>
If I delete the Home tab, the Arcade tab takes its place and looks the same way. Any ideas?
My website that this is happening on is: http://gameshank.com/8-20-13/
Thanks ahead!
On your site an additional link is inside your first li.
<a id="top"></a>
Also the center tag is deprecated. You should use:
margin: 0 auto;
For block level elements.