IE CSS nested horizontal list position
Using a modified version of (http://lwis.net/free-css-drop-down-menu/dropdown.simple.linear.html) I have created a nested list that goes down 3 levels. Level 1 and 2 are horizontal and level 3 is vertical (at least that is the plan)
First and second levels work as expected in all browsers.
In IE6 the third level starts at the end of it's parent LI instead of directly below it.
EG:
| Item 1 | Item 2 | Item 3 |
| Item 2.1 | Item 2.2 | Item 2.3 |
| Item 2.2.1 |
| Item 2.2.2 |
Should be:
| Item 1 | Item 2 | Item 3 |
| Item 2.1 | Item 2.2 | Item 2.3 |
| Item 2.2.1 |
| Item 2.2.2 |
Any aid in this would be met with hearty thanks and a raised glass when I hit the pub ;)
All code below
jQuery
$(document).ready(function(){
if($("ul.dropdown").length) {
$("ul.dropdown li").dropdown();
}
});
$.fn.dropdown = function() {
return this.each(function() {
$(this).hover(function(){
$(this).addClass("hover");
$('> .dir',this).addClass("open");
$('ul:first',this).css('visibility', 'visible');
},function(){
$(this).removeClass("hover");
$('.open',this).removeClass("open");
$('ul:first',this).css('visibility', 'hidden');
});
});
}
CSS
ul.dropdown {
width: 1003px;
background-color: #ccc;
border: solid 1px #999;
position: relative;
height: 30px;
}
ul.dropdown, ul.dropdown li, ul.dropdown ul {
list-style: none;
margin: 0;
padding: 0;
}
ul.dropdown li {
display: inline;
padding: 5px;
float: left;
line-height: 1.3em;
vertical-align: middle;
}
ul.dropdown li :hover {
color: #000;
background-color: #ddd;
}
ul.dropdown li:hover > ul {
visibility:visible;
}
ul.dropdown li a {
text-decoration: none;
background-color: #dde;
}
ul.dropdown ul {
visibility: hidden;
position: absolute;
top: 100%;
left: -1px;
z-index: 598;
width: 1003px;
开发者_Python百科display: inline-block;
background-color: #ccc;
border: solid 1px #999;
}
ul.dropdown ul ul{
width: auto;
margin: 0 0 0 -10px;
border-top: solid 1px #CCC;
background-color: #F6F6F6;
position: absolute;
left: auto;
}
ul.dropdown ul ul li {
white-space: nowrap;
display: inline-block;
}
HTML
<ul class="dropdown">
<li><a href="#">Item 1</a>
<ul>
<li><a href="#">Item 1.1</a></li>
<li><a href="#">Item 1.2</a></li>
</ul>
</li>
<li><a href="#">Item 2</a>
<ul>
<li><a href="#">Item 2.1</a></li>
<li><a href="#">Item 2.2</a>
<ul>
<li><a href="#">Item 2.2.1</a>
<li><a href="#">Item 2.2.2</a>
</ul>
</li>
<li><a href="#">Item 2.3</a></li>
</ul>
</li>
<li><a href="#">Item 3</a>
<ul>
<li><a href="#">Item 3.1</a></li>
<li><a href="#">Item 3.2</a></li>
</ul>
</li>
</ul>
Really, figuring out styling issues in IE6 shouldn't even be a concern. The data shows up, so from the most technical standpoint, the site is functioning and the data can be retrieved.
The extra hassle and work to support a 10+ year old browser to satisfy the 3% of users who still use IE6 isn't worth it. Do a browser detect and highly recommend users of IE6 upgrade to IE8 or switch to another browser.
精彩评论