html5中文学习网

您的位置: 首页 > 网页制作 > css教程 » 正文

CSS横向下拉菜单(兼容IE6)_CSS教程_CSS_网页制作

[ ] 已经帮助:人解决问题
点评:大多数人会选择用JavaScript去实现下拉菜单,但其实CSS也可以做到的哦,下面为大家介绍下CSS驱动的横向下拉菜单,感兴趣的朋友不要错过
CSS驱动的横向下拉菜单(改进版) ZFPHTML5中文学习网 - HTML5先行者学习网
由于我的IE是IE7的,所以起初没有意识到那个下拉菜单在IE6中不能显示,今天刚把IE7卸了装了IE6,一般的,由于CSS驱动的下拉菜单不能在IE6中正常工作,大多数人会选择用JavaScript去实现下拉菜单,但其实CSS也可以做到的哦~~ ZFPHTML5中文学习网 - HTML5先行者学习网
这个关键就是这个语句:body { behavior:url(csshover.htc);}。通过IE特有的属性behavior调用一个行为文件,为IE添加一些通常没有的功能。即只有IE才去下载它,其他浏览器不会浪费带宽去下载它,其缺点是:behavior声明无法通过样式表的验证。可以将之转移到一个单独的样式表文件,然后用@import引用它。让主要的样式表通过验证。 ZFPHTML5中文学习网 - HTML5先行者学习网
ZFPHTML5中文学习网 - HTML5先行者学习网
下面看一下CSS的源码,注释中有给出csshover.htc文件的作用。(我有修改多处源码,发现上次写的有很多不足~~)对了,这个csshover.htc文件可以在http://www.xs4all.nl/~peterned/csshover.html#changes上下载得到。(是英文网站哈,不过单击橙色的download连接就可以下载了,只是有不同的版本,我这里用的是“Version 1.42.060206 (:hover and :active) download | view”这个连接的版本。)不废话了,还是看源码吧~~ ZFPHTML5中文学习网 - HTML5先行者学习网
BODY部分 ZFPHTML5中文学习网 - HTML5先行者学习网

复制代码
代码如下:
ZFPHTML5中文学习网 - HTML5先行者学习网
<ul id="nav2"> ZFPHTML5中文学习网 - HTML5先行者学习网
<li><a href="">文章</a> ZFPHTML5中文学习网 - HTML5先行者学习网
<ul> ZFPHTML5中文学习网 - HTML5先行者学习网
<li><a href="">CSS教程</a></li> ZFPHTML5中文学习网 - HTML5先行者学习网
<li><a href="">DOM教程</a></li> ZFPHTML5中文学习网 - HTML5先行者学习网
<li><a href="">XML教程</a></li> ZFPHTML5中文学习网 - HTML5先行者学习网
<li><a href="">FLASH教程</a></li> ZFPHTML5中文学习网 - HTML5先行者学习网
</ul> ZFPHTML5中文学习网 - HTML5先行者学习网
</li> ZFPHTML5中文学习网 - HTML5先行者学习网
<li><a href="">交流</a> ZFPHTML5中文学习网 - HTML5先行者学习网
<ul> ZFPHTML5中文学习网 - HTML5先行者学习网
<li><a href="">CSS应用</a></li> ZFPHTML5中文学习网 - HTML5先行者学习网
<li><a href="">XML应用</a></li> ZFPHTML5中文学习网 - HTML5先行者学习网
<li><a href="">FLASHAS编程</a></li> ZFPHTML5中文学习网 - HTML5先行者学习网
<li><a href="">DW网页制作</a></li> ZFPHTML5中文学习网 - HTML5先行者学习网
</ul> ZFPHTML5中文学习网 - HTML5先行者学习网
</li> ZFPHTML5中文学习网 - HTML5先行者学习网
<li><a href="">博客</a> ZFPHTML5中文学习网 - HTML5先行者学习网
<ul> ZFPHTML5中文学习网 - HTML5先行者学习网
<li><a href="">全部</a></li> ZFPHTML5中文学习网 - HTML5先行者学习网
<li><a href="">网页特效</a></li> ZFPHTML5中文学习网 - HTML5先行者学习网
<li><a href="">高级编程</a></li> ZFPHTML5中文学习网 - HTML5先行者学习网
<li><a href="">FLASH动画</a></li> ZFPHTML5中文学习网 - HTML5先行者学习网
</ul> ZFPHTML5中文学习网 - HTML5先行者学习网
</li> ZFPHTML5中文学习网 - HTML5先行者学习网
</ul> ZFPHTML5中文学习网 - HTML5先行者学习网
ZFPHTML5中文学习网 - HTML5先行者学习网
CSS部分 ZFPHTML5中文学习网 - HTML5先行者学习网

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