纯CSS实现兼容IE7及以上宽度自适应无限级导航菜单附演示

所属分类: 网页制作 / CSS 阅读数: 988
收藏 0 赞 0 分享
先来个Demo:
https://www.jb51.net/jiaoben/111258.html
好吧,我承认,我有点标题党了,IE7的兼容并不是特别好,当鼠标离开某个导航再进入时,会留下上一次子菜单的残影(写的好像玄幻小说似的=。=)

不过纯属研究,O(∩_∩)O哈哈~

宽度自适应是指各级菜单都可以随内容的长度自行适应宽度,而当浏览器分辨率较低时一级导航也可以自动换行,而多级子菜单靠左显示还是得手动调整。

DOM结构比较简单,只是 ol.nav 与 li.item 的互相嵌套而已。

看代码吧(长是长了点,但其实你会发现导航的标签结构真的真的很简单,重要的是CSS部分):

复制代码
代码如下:

<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>无限级纯CSS导航菜单</title>
<style type="text/css">
.nav{
margin: 0;
padding: 0;
float: left;
list-style: none;
background: #222;
}
.nav a{
color: #ddd;
display: block;
padding: 0 15px;
text-decoration: none;
}
.nav a:hover{
color: #2FAADD;
}
.nav .item{
margin: 0;
padding: 0;
float: left;
height: 35px;
line-height: 35px;
white-space: nowrap;
}
.nav .item:hover>a{
color: #2FAADD;
}
.nav .item:hover>.nav{
display: block;
}
.nav .nav{
top: 100%;
left: 0;
display: none;
background: #444;
position: absolute;
border: 1px solid #888;
}
.nav .nav .item{
clear: both;
min-width: 100%;
}
.nav .nav .nav{
top: -1px;
left: 100%;
}
.nav .nav .nav .nav .nav .nav{
left: auto;
right: 100%;
}
</style>
</head>
<body>
<ul class="nav">
<li class="item"><a href="#">一级导航 1</a>
<ul class="nav">
<li class="item"><a href="#">二级导航 1</a>
<ul class="nav">
<li class="item"><a href="#">三级导航 1</a></li>
<li class="item"><a href="#">三级导航 2</a></li>
<li class="item"><a href="#">三级导航 3</a></li>
<li class="item"><a href="#">三级导航 4</a></li>
<li class="item"><a href="#">三级导航 5</a></li>
</ul>
</li>
<li class="item"><a href="#">二级导航 2</a>
<ul class="nav">
<li class="item"><a href="#">三级导航 1</a></li>
<li class="item"><a href="#">三级导航 2</a></li>
<li class="item"><a href="#">三级导航 3</a></li>
<li class="item"><a href="#">三级导航 4</a></li>
<li class="item"><a href="#">三级导航 5</a></li>
</ul>
</li>
<li class="item"><a href="#">无子导航 3</a></li>
<li class="item"><a href="#">二级导航 4</a>
<ul class="nav">
<li class="item"><a href="#">三级导航 1</a></li>
<li class="item"><a href="#">三级导航 2</a></li>
<li class="item"><a href="#">三级导航 3</a></li>
<li class="item"><a href="#">三级导航 4</a></li>
<li class="item"><a href="#">三级导航 5</a></li>
</ul>
</li>
<li class="item"><a href="#">无子导航 5</a></li>
</ul>
</li>
<li class="item"><a href="#">长长的一级导航 2</a>
<ul class="nav">
<li class="item"><a href="#">二级导航 1</a>
<ul class="nav">
<li class="item"><a href="#">三级导航 1</a></li>
<li class="item"><a href="#">三级导航 2</a></li>
<li class="item"><a href="#">三级导航 3</a></li>
<li class="item"><a href="#">三级导航 4</a></li>
<li class="item"><a href="#">三级导航 5</a></li>
</ul>
</li>
<li class="item"><a href="#">二级导航 2</a>
<ul class="nav">
<li class="item"><a href="#">三级导航 1</a></li>
<li class="item"><a href="#">三级导航 2</a></li>
<li class="item"><a href="#">三级导航 3</a></li>
<li class="item"><a href="#">三级导航 4</a></li>
<li class="item"><a href="#">三级导航 5</a></li>
</ul>
</li>
<li class="item"><a href="#">更长的二级导航 3</a>
<ul class="nav">
<li class="item"><a href="#">三级导航 1</a></li>
<li class="item"><a href="#">三级导航 2</a></li>
<li class="item"><a href="#">三级导航 3</a></li>
<li class="item"><a href="#">三级导航 4</a></li>
<li class="item"><a href="#">低调的三级导航 5</a>
<ul class="nav">
<li class="item"><a href="#">四级导航 1</a></li>
<li class="item"><a href="#">藏的很深的四级导航 2</a>
<ul class="nav">
<li class="item"><a href="#">藏的更深的五级导航 0</a></li>
<li class="item"><a href="#">五级导航 1</a></li>
<li class="item"><a href="#">五级导航 2</a></li>
<li class="item"><a href="#">五级导航 3</a></li>
<li class="item"><a href="#">五级导航 4</a></li>
<li class="item"><a href="#">下面该往左了吧</a>
<ul class="nav">
<li class="item"><a href="#">我在左边</a></li>
<li class="item"><a href="#">我真的在左边</a></li>
<li class="item"><a href="#">我就要赖在左边</a></li>
<li class="item"><a href="#">杨丞琳的左边好听</a></li>
<li class="item"><a href="#">呜呜,今年双十一又要过节</a></li>
<li class="item"><a href="#">妹纸妹纸在哪里?</a></li>
</ul>
</li>
</ul>
</li>
<li class="item"><a href="#">四级导航 3</a></li>
<li class="item"><a href="#">四级导航 4</a></li>
<li class="item"><a href="#">四级导航 5</a></li>
</ul>
</li>
</ul>
</li>
<li class="item"><a href="#">二级导航 4</a>
<ul class="nav">
<li class="item"><a href="#">三级导航 1</a></li>
<li class="item"><a href="#">三级导航 2</a></li>
<li class="item"><a href="#">三级导航 3</a></li>
<li class="item"><a href="#">三级导航 4</a></li>
<li class="item"><a href="#">三级导航 5</a></li>
</ul>
</li>
<li class="item"><a href="#">二级导航 5</a>
<ul class="nav">
<li class="item"><a href="#">三级导航 1</a></li>
<li class="item"><a href="#">三级导航 2</a></li>
<li class="item"><a href="#">三级导航 3</a></li>
<li class="item"><a href="#">三级导航 4</a></li>
<li class="item"><a href="#">三级导航 5</a></li>
</ul>
</li>
</ul>
</li>
<li class="item"><a href="#">无子导航 3</a></li>
<li class="item"><a href="#">一级导航 4</a>
<ul class="nav">
<li class="item"><a href="#">二级导航 1</a>
<ul class="nav">
<li class="item"><a href="#">三级导航 1</a></li>
<li class="item"><a href="#">三级导航 2</a></li>
<li class="item"><a href="#">三级导航 3</a></li>
<li class="item"><a href="#">三级导航 4</a></li>
<li class="item"><a href="#">三级导航 5</a></li>
</ul>
</li>
<li class="item"><a href="#">二级导航 2</a>
<ul class="nav">
<li class="item"><a href="#">三级导航 1</a></li>
<li class="item"><a href="#">三级导航 2</a></li>
<li class="item"><a href="#">三级导航 3</a></li>
<li class="item"><a href="#">三级导航 4</a></li>
<li class="item"><a href="#">三级导航 5</a></li>
</ul>
</li>
<li class="item"><a href="#">二级导航 3</a>
<ul class="nav">
<li class="item"><a href="#">三级导航 1</a></li>
<li class="item"><a href="#">三级导航 2</a></li>
<li class="item"><a href="#">三级导航 3</a></li>
<li class="item"><a href="#">三级导航 4</a></li>
<li class="item"><a href="#">三级导航 5</a></li>
</ul>
</li>
<li class="item"><a href="#">二级导航 4</a>
<ul class="nav">
<li class="item"><a href="#">三级导航 1</a></li>
<li class="item"><a href="#">三级导航 2</a></li>
<li class="item"><a href="#">三级导航 3</a></li>
<li class="item"><a href="#">三级导航 4</a></li>
<li class="item"><a href="#">三级导航 5</a></li>
</ul>
</li>
<li class="item"><a href="#">二级导航 5</a>
<ul class="nav">
<li class="item"><a href="#">三级导航 1</a></li>
<li class="item"><a href="#">三级导航 2</a></li>
<li class="item"><a href="#">三级导航 3</a></li>
<li class="item"><a href="#">三级导航 4</a></li>
<li class="item"><a href="#">三级导航 5</a></li>
</ul>
</li>
</ul>
</li>
<li class="item"><a href="#">一级导航 5</a>
<ul class="nav">
<li class="item"><a href="#">无子导航 1</a></li>
<li class="item"><a href="#">无子导航 2</a></li>
<li class="item"><a href="#">无子导航 3</a></li>
<li class="item"><a href="#">无子导航 4</a></li>
<li class="item"><a href="#">无子导航 5</a></li>
</ul>
</li>
</ul>
</body>
</html>

不过如果要探讨实用性的话,还是需要用JavaScript来兼容IE6下li不支持hover伪类的BUG,改动也很简单,也来个Demo:
https://www.jb51.net/jiaoben/111260.html
更多精彩内容其他人还在看

Opera中国的WEB标准课程

网页制作Webjx文章简介:在这篇文章里,我要向大家介绍我和其他很多人花费数月时间开发的一个课程——Web标准课程,该课程旨在向大家提供Web设计和开发的坚实基础,无论读者是谁,此教程完全免费、可访问,并且不需要预备知识。当然,我主要还
收藏 0 赞 0 分享

CSS样式表渐进增强的基本概念

网页制作Webjx文章简介:如果你挠着头想弄清楚优雅降级和渐进增强的区别,我告诉你,这是视角问题。优雅降级和渐进增强都考虑网站在各种设备的各种浏览器上如何良好运转。两者区别的关键在于它们各自关注的焦点,以及这种关注对工作流程的影响
收藏 0 赞 0 分享

简单介绍Web Developer插件制作网页

网页制作Webjx文章简介:Firefox浏览器是一个良好支持W3C标准的开放源代码的浏览器,拥有Linux/Windows/Mac版本。因为Firefox浏览器良好支持W3C标准,所以使用Firefox来调试网页是非常好的。 Firefox浏览器是
收藏 0 赞 0 分享

CSS布局带来的巨大影响:CSS display属性值

网页制作Webjx文章简介:网页元素应用上那些与表格相关的display属性值后,能够模仿出与表格相同的特性。我将会在该文中给大家演示这种方法给CSS布局带来的巨大影响。 应原书编辑要求,先在文章顶部给出链接:《Everything You
收藏 0 赞 0 分享

用div css模拟表格对角线

这只是探讨一种CSS模拟表格对角线的用法,实际在工作中可能觉得这样做有点小题大作,这不是本主题讨论的重点。如果对此深以为然的朋友,请一笑过之 首先声明: 这只是探讨一种CSS模拟表格对角线的
收藏 0 赞 0 分享

IE Firefox在css中的差别 (部分)

1、单位问题 问题:任何距离的数值ie可以不加单位,ff必须要求写单位(0除外) 解决:写全单位如padding:0px; 2、水平居中 问题:div里的内容,ie默认为center,而ff默认left 解决:mairgin:0px auto; 3、高度问题
收藏 0 赞 0 分享

不用js可以实现信息提示效果

[code] <style> body { font:verdena; font-size:14px; color:#000 } h1{ font:verdena; font-size:22px; color:#000 } h2{ font:verdena;
收藏 0 赞 0 分享

CSS解决未知高度的垂直水平居中自适应问题

今天有人问起,晚上试着写出来,供参考; 以下代码兼容主流浏览器IE6、IE7、Firefox、Opera。 从最简单的开始………… 一、如何让一个DIV水平居中? 这个简单不作过多说明! [code] <st
收藏 0 赞 0 分享

CSS cursor 属性 -- 鼠标指针样式效果

取值: [ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize |
收藏 0 赞 0 分享

css 简单区别ie6,ie7,firefox的写法

同一样式里可以这样 [code] margin:17px; FF +margin:17px; IE6 IE7 _margin:17px; IE6 [/code] 按这个顺序,刚好区分开三个浏览器
收藏 0 赞 0 分享
查看更多