复制代码代码如下: /* CSS驱动的横向下拉菜单 */ body { behavior:url(csshover.htc); } ul#nav2 { padding:0px; margin:0px; } /*注意:列表<ul>不可以是列表的子结点,但可以是列表项<li>的子结点*/ ul#nav2 li { float:left; width:160px; list-style:none; }/*列表项水平浮动,使形成横向的一级菜单*/ ul#nav2 li ul { /*设置下拉菜单不可见,只有当鼠标经过使才可见*/ display:none; margin:0; padding:0;/*去除所以的缩进(不同浏览器对列表的内外边距默认设置不一样,在这里设置使消除不同浏览器间的不同效果)*/ } ul#nav2 li:hover ul{ display:block; } ul#nav2 li li:hover { background-color:#f4f4f4; } /*CSS中允许将悬停样式用在所有元素中,而IE只运行应用在连接上, 但是,csshover.htc文件的唯一作用就是给IE增加了任意元素的悬停功能。*/ ul#nav2 li a{ display:block; border:1px solid #c5c6c4; text-decoration:none; color:#000; } ul#nav2 li li a { /*对下拉菜单中的项进行修饰*/ display:block; font-size:12px; border:1px solid #ccc; padding:3px; text-decoration:none; color:#777; width:152px;/*使所有列表项宽度统一,160-3*2-1*2=152px*/ } /*IE中display:block不足以使连接a的可单击区域填充整个列表项,但如果给连接设置一个明确的宽度,就可以得到想要的行为。对于其他的浏览器,只需要将width重新跳回auto让浏览器自己自己调整就可以即可。*/ ul#nav2>li li a { width:auto; } /*子选择器>对IE6以下不可见,所以IE6不会去执行它*/
OK~~,到这里不同浏览器的CSS驱动的下拉菜单就告一段落了,不过,可能有的朋友会想让子菜单放在其他的位置,而不是默认的一级菜单的正下方,也好办: 1.在ul#nav2 li选择器中添加position:relative; 2.在ul#nav2 li ul 选择器中添加position:absolute; 3.这样就将一级菜单的各列表项(已相对定位)为任何绝度定位的子孙元素建立了一个容器块,即绝对定位了的子菜单将以它为定位的起始点,通过添加top,left属性定位调整与一级菜单的关系来调整自己的位置(即距离容器块左上角的位置偏移量)。