CSS驱动的横向下拉菜单(改进版)
由于我的IE是IE7的,所以起初没有意识到那个下拉菜单在IE6中不能显示,今天刚把IE7卸了装了IE6,一般的,由于CSS驱动的下拉菜单不能在IE6中正常工作,大多数人会选择用Javascript去实现下拉菜单,但其实CSS也可以做到的哦~~
这个关键就是这个语句:body { behavior:url(csshover.htc);}。通过IE特有的属性behavior调用一个行为文件,为IE添加一些通常没有的功能。即只有IE才去下载它,其他浏览器不会浪费带宽去下载它,其缺点是:behavior声明无法通过样式表的验证。可以将之转移到一个单独的样式表文件,然后用@import引用它。让主要的样式表通过验证。
下面看一下CSS的源码,注释中有给出csshover.htc文件的作用。(我有修改多处源码,发现上次写的有很多不足~~)对了,这个csshover.htc文件可以在http://www.xs4all.nl/~peterned/csshover.html#changes上下载得到。(是英文网站哈,不过单击橙色的download连接就可以下载了,只是有不同的版本,我这里用的是“Version 1.42.060206 (:hover and :active) download | view”这个连接的版本。)不废话了,还是看源码吧~~
BODY部分
复制代码代码如下:
CSS部分
复制代码代码如下:
body {
behavior:url(csshover.htc);
}
ul#nav2 {
padding:0px;
margin:0px;
}
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;
}
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;
}
ul#nav2>li li a {
width:auto;
}
OK~~,到这里不同浏览器的CSS驱动的下拉菜单就告一段落了,不过,可能有的朋友会想让子菜单放在其他的位置,而不是默认的一级菜单的正下方,也好办:
1.在ul#nav2 li选择器中添加position:relative;
2.在ul#nav2 li ul 选择器中添加position:absolute;
3.这样就将一级菜单的各列表项(已相对定位)为任何绝度定位的子孙元素建立了一个容器块,即绝对定位了的子菜单将以它为定位的起始点,通过添加top,left属性定位调整与一级菜单的关系来调整自己的位置(即距离容器块左上角的位置偏移量)。



