CSS下拉菜单 支持FF、IE 6 7 8

作者:shenmeng 发布时间:November 14, 2009 分类:默认分类

用css做下拉菜单,要用到块的不可见属性。有两种方法,一种是利用visibility: hidden; 另一种是利用display:none;
其实两者原理基本相同,后者略简洁。在IE5 6 7 8,FF,OP上测试成功。下面演示一个例子,我的目标是用最精简的代码演示一个完整的例子。
先建一个嵌套列表,代码如下:

<div id="nav_test">
<ul>
    <li><a href="">外层1</a></a>
        <ul>
        <li><a href="">内层1</a></li>
        <li><a href="">内层2</a></li>
        </ul>  
    </li>
    <li><a href="">外层2</a></a>
        <ul>
        <li><a href="">内层3</a></li>
        <li><a href="">内层4</a></li>
        </ul>  
    </li>
</ul>

现在写CSS代码:

<style type="text/css">
#nav_test *{margin:0;padding: 0;}
#nav_test{
    behavior: urlcsshover3.htc);
    width:200px;
    text-align: center;
    font-size:17px;
}
#nav_test a{
    display:block;
    color:#FFFFFF;
    background: #999999;
    text-decoration: none;
}
#nav_test ul{
    width: 100%;
    list-style: none;
}
#nav_test li{
    width: 50%;
    float:left;
    position:relative;
}
#nav_test li li{
    clear: both;
    width: 100%;
}
#nav_test li li a{
    display:none;
}
#nav_test a:hover{
    background: #333333;
}
#nav_test ul ul{
    position: absolute;
    top: 17px;
    left:0px;
    clear:both;
}
#nav_test li:hover li a{
    display: block;
}
</style>

实际效果演示
由于IE6不支持li的hover伪类,所以添加一句behavior: url(csshover3.htc); 文件csshover3.htc (下载) 是一个为IE添加了几个伪类支持的脚本,为IE6+添加hover和active支持,为IE7,IE8添加focus支持。关于该文件的具体信息及下载请见http://www.xs4all.nl/~peterned/csshover.html
另外网上有一种对IE6不支持li:hover的hack,但是在IE8中却失效了,那种方法见探究纯粹的CSS下拉菜单

另外,IE7 IE8虽然支持li:hover ,但是必须申明DOCTYPE为strict ,我试验的结果是在本地需要申明DOCTYPE为strict ,但放在服务器端则不需申明。

标签: none

仅有一条评论 »

  1. 阿邙 阿邙 April 11th, 2010 at 09:13 am

    如果想实现3级下拉 该怎么改呢?

添加新评论 »

captcha
请输入验证码