How to make menu by pure CSS

I was asked to find a solution for making a horizontal dropdown menu in HTML. I don't know how to do it but I'm sure it is possible especially in Firefox. After searching in Google, I found a good tutorial.

I just need to use CSS as follows.

#menu {
width: 100%;
background: #eee;
float: left;
}
 
#menu ul {
list-style: none;
margin: 0;
padding: 0;
width: 12em;
float: left;
}
 
#menu a, #menu h2 {
font: bold 11px/16px arial, helvetica, sans-serif;
display: block;
border-width: 1px;
border-style: solid;
border-color: #ccc #888 #555 #bbb;
margin: 0;
padding: 2px 3px;
}
 
#menu h2 {
color: #fff;
background: #000;
text-transform: uppercase;
}
 
#menu a {
color: #000;
background: #efefef;
text-decoration: none;
}
 
#menu a:hover {
color: #a00;
background: #fff;
}
 
#menu li {position: relative;}
 
#menu ul ul {
position: absolute;
z-index: 500;
}
 
#menu ul ul ul {
position: absolute;
top: 0;
left: 100%;
}
 
div#menu ul ul {
display: none;
}
 
div#menu ul ul,
div#menu ul li:hover ul ul,
div#menu ul ul li:hover ul ul
{display: none;}
 
div#menu ul li:hover ul,
div#menu ul ul li:hover ul,
div#menu ul ul ul li:hover ul
{display: block;}

And then format the menu as follows.

<div id="menu">
<ul>
  <li><h2>Menu 1</h2>
    <ul>
      <li><a href="#link1-1">Link 1-1</a>
        <ul>
          <li><a href="#link1-1-1">Link 1-1-1</a></li>
          <li><a href="#link1-1-2">Link 1-1-2</a></li>
          <li><a href="#link1-1-3">Link 1-1-3</a></li>
        </ul>
      </li>
    </ul>
  </li>
</ul>
 
<ul>
  <li><h2>Menu 2</h2>
    <ul>
      <li><a href="#link2-1">Link 2-1</a></li>
      <li><a href="#link2-2">Link 2-2</a>
        <ul>
          <li><a href="#link2-3-1">Link 2-3-1</a>   
            <ul>
              <li><a href="#link2-3-1-1">Link 2-3-1-1</a></li>
              <li><a href="#link2-3-1-2">Link 2-3-1-2</a></li>
              <li><a href="#link2-3-1-3">Link 2-3-1-3</a></li>
              <li><a href="#link2-3-1-4">Link 2-3-1-4</a></li>
              <li><a href="#link2-3-1-5">Link 2-3-1-5</a></li>
              <li><a href="#link2-3-1-6">Link 2-3-1-6</a></li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
</ul>
</div>

However, above CSS does not work correctly in IE6 and older. I need special style as follows.

<!--[if IE]>
<style type="text/css" media="screen">
body {
behavior: url(csshover.htc);
font-size: 100%;
}
 
#menu ul li {float: left; width: 100%;}
#menu ul li a {height: 1%;} 
 
#menu a, #menu h2 {
font: bold 0.7em/1.4em arial, helvetica, sans-serif;
}
</style>
<![endif]-->

In addition, you need csshover.htc from whatever:hover.

Tags: , ,

Post new comment

The content of this field is kept private and will not be shown publicly.