I have been developing some dropdown menus loosely based on Patrick Griffiths “Suckerfish” example (see [url]http://www.alistapart.com/articles/dropdowns/
First, in IE (6.0.2800) the dropdown is offset significantly from the left edge of the upper menu cell. In Mozilla (1.7.5) it’s fine. I can’t figure out why — any ideas? I want it right underneath, not offset.
Also, in Mozilla the dropdowns have a 1-pixel space at the right edge between the background and the border. Also a mystery …
Thanks for any comments / thoughts.
Tom
========================================================
[CODE]
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<head>
<title>Test</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
<style type=”text/css”>
body {
font-family: arial, helvetica, serif;
background: white url(images/ddbg3.gif) no-repeat 6000px 6000px;
margin-left: 1em;
}
.mainlist {
list-style: none;
padding: 0;
margin: 0;
}
.mainitem {
float: left;
position: relative;
width: 120px;
text-align: center;
cursor: hand;
padding: 0;
border-top: 1px solid green;
border-left: 1px solid green;
border-bottom: 1px solid green;
}
.mainitem a {
font-weight: bold;
color: green;
text-decoration: none;
}
.mainitemlast {
border-right: 1px solid green;
}
.mainlist li:hover ul {
display: block;
left: 0;
}
li.over ul {
display: block;
left: 0;
}
.sublist {
display: none;
position: absolute;
float: left;
top: auto;
font-weight: normal;
background-color: #CCCCFF;
width: 150px;
padding: 0;
}
.subitem {
display: block;
float: left;
position: relative;
left: 0;
width: 100%;
border-top: 1px solid blue;
border-left: 1px solid blue;
border-right: 1px solid blue;
}
.subitemlast {
border-bottom: 1px solid blue;
}
.subitem a {
display: block;
font-weight: normal;
color: #060;
padding: 5px;
}
.subitem a:hover {
background-color: #EEEEFF;
}
</style>
<script type=”text/javascript”><!–//–><![CDATA[//><!–
startList = function() {
if (document.all&&document.getElementById) {
navRoot = document.getElementById(“nav”);
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName==”LI”) {
node.onmouseover=function() {
this.className+=” over”;
}
node.onmouseout=function() {
this.className=this.className.replace(” over”, “”);
}
}
}
}
}
window.onload=startList;
//–><!]]></script>
</head>
<body>
<div id=”content”>
<br>
<ul class=”mainlist” id=”nav”>
<li class=”mainitem”>
<div><a href=””>Option 1</a></div>
<ul class=”sublist”>
<li class=”subitem”><a href=””>Subitem 1</a></li>
<li class=”subitem”><a href=””>Subitem 2</a></li>
<li class=”subitem”><a href=””>Subitem 3 is longer</a></li>
<li class=”subitem subitemlast”><a href=””>Subitem 4</a></li>
</ul>
</li>
<li class=”mainitem”>
<div><a href=””>Option 2</a></div>
<ul class=”sublist”>
<li class=”subitem”><a href=””>Subitem 1</a></li>
<li class=”subitem”><a href=””>Subitem 2</a></li>
<li class=”subitem”><a href=””>Subitem 3 is longer</a></li>
<li class=”subitem subitemlast”><a href=””>Subitem 4</a></li>
</ul>
</li>
<li class=”mainitem mainitemlast”>
<div><a href=””>Option 3</a></div>
<ul class=”sublist”>
<li class=”subitem”><a href=””>Subitem 1</a></li>
<li class=”subitem”><a href=””>Subitem 2</a></li>
<li class=”subitem”><a href=””>Subitem 3 is longer</a></li>
<li class=”subitem subitemlast”><a href=””>Subitem 4</a></li>
</ul>
</li>
</ul>
</div>
</body>
</html>