多级导航,转自http://blog.csdn.net/rabbitter/article/details/51125337
来源:互联网 发布:软件项目沟通计划 编辑:程序博客网 时间:2024/06/07 15:58
纯CSS多级导航栏
转自http://blog.csdn.net/rabbitter/article/details/51125337
版权声明:本文为博主原创文章,未经博主允许不得转载。
前一段时间再看《精通CSS》的时候,磕磕绊绊的写出了一个纯CSS导航栏,晚上突然想到了这个,把它重写一遍。在这个过程中发现自己比之前有了些许提高,我想应该是之前做的优酷整站练习的功劳吧,这个整站练习中收获良多,不仅是还原了设计图,而且不知不觉自己就有了提高。多实践才是正道。
题名为多级导航栏,以二级导航为例,在搞清楚原理的情况下,很简单就可以做出多级导航。效果如下:
原理:在无序列表中嵌套无序列表,一级导航中每个li标签里都嵌套一个无序列表作为二级菜单,即二级导航也是一个无序列表。
- <ul id="nav"><!--一级导航的ul-->
- <li class="safe"><a href="safe.html">SAFETY</a><!--一级导航的li-->
- <ul><!--一级导航的li中的二级导航的ul-->
- <li><a href="http://cn.bing.com">After Effects</a></li><!--二级导航中各个选项li-->
- <li><a href="#">Open-Source Apps</a></li>
- <li><a href="#">Android</a></li>
- <li><a href="#">JavaScript</a></li>
- </ul>
- </li>
- </ul>
二级导航默认是不可见的,只有当一级导航中的li被鼠标移入时才用伪类hover让相对应的二级导航显示出来,可用两种方式使其不可见:
1.设置其为display:none;在鼠标移入时将其设置为:display:block;
2.由于他是绝对定位,可以将他的位置设置为里屏幕很远,如:left:-9999px;在鼠标移入时,将其设置到正确位置。
这样基本就完成了一个二级导航。在此基础上可以毫不费力地做出三级导航,四级导航...N级导航.....不过超过三级导航就没必要了。
为了使之使用起来更加友好,可以对其加些功能,比如当鼠标移入一级导航时,不仅弹出对应的二级导航,还会改变这个一级导航的样式,使其更加显眼,这个用伪类hover就可以轻松完成。再如:在导航条中突出显示当前页面对应的选项以提醒用户知道自己的位置(比如用户在首页,则导航条的首页选项的样式会和其他选项不同),这样用户看看导航条就会知道自己身处何处,这可以在页面中手动改变;以home页面为例,在home.html中,将对应home的li的类名增加this类(<li class="home this"><a href="index.html">HOME</a></li>),而this类名对应的样式是与众不同的(如.this{border-bottom: 2px solid #b0b;}),只需要在CSS文件中增加this类的样式,需要改变样式时直接给HTML标签增加类名就可以了;然而这种方法有违背结构与样式分离原则的嫌疑,而且操作起来有些繁琐,不过在利用纯CSS达到这个目的的情况下这样也可以。
最终效果为:
源码如下:
HTML:
- <!DOCTYPE html>
- <html>
- <head>
- <title>nav</title>
- <link rel="stylesheet" type="text/css" href="style/common.css">
- </head>
- <body>
- <div id="nav-wrap">
- <ul id="nav"><!--一级导航的ul-->
- <li class="home this"><a href="index.html"><i></i><span>HOME</span></a></li>
- <li class="safe"><a href="safe.html"><i></i><span>SAFETY</span></a><!--一级导航的li-->
- <ul><!--一级菜单的li中的二级导航的ul-->
- <li><a href="http://cn.bing.com"><span>After Effects</span></a></li><!--二级导航中各个选项li-->
- <li><a href="#"><span>Open-Source Apps</span></a></li>
- <li><a href="#"><span>Android</span></a></li>
- <li><a href="#"><span>JavaScript</span></a></li>
- </ul>
- </li>
- <li class="service"><a href="#"><i></i><span>SERVICE</span></a>
- <ul>
- <li><a href="#"><span>After Effects</span></a></li>
- <li><a href="#"><span>Open-Source Apps</span></a></li>
- <li><a href="#"><span>Android</span></a></li>
- <li><a href="#"><span>JavaScript</span></a></li>
- </ul>
- </li>
- <li class="shoping-car"><a href="#"><i></i><span>SHOPING CAR</span></a>
- <ul>
- <li><a href="#"><span>After Effects</span></a></li>
- <li><a href="#"><span>Open-Source Apps</span></a></li>
- <li><a href="#"><span>Android</span></a></li>
- <li><a href="#"><span>JavaScript</span></a></li>
- </ul>
- </li>
- <li class="member"><a href="#"><i></i><span>MEMBER</span></a>
- <ul>
- <li><a href="#"><span>After Effects</span></a></li>
- <li><a href="#"><span>Open-Source Apps</span></a></li>
- <li><a href="#"><span>Android</span></a></li>
- <li><a href="#"><span>See More...</span></a></li>
- </ul>
- </li>
- </ul>
- </div>
- </body>
- </html>
- body,ul,li,a{margin: 0;padding: 0}
- body{background-color: #e6e7e9;}
- #nav-wrap{margin: 100px auto;width: 100%;background-color: white;border-bottom: 2px solid #ddd;}
- ul{list-style: none;}
- #nav{width: 750px; height: 45px;margin:0 auto;}
- #nav>li{float: left;position: relative;height: 45px;margin-right: 60px;}
- a{display: block; text-decoration: none;font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif;font-size: 12px;}
- #nav>li>a{color: #000;text-transform:uppercase;height: 13px; line-height: 13px; padding: 17px 0 15px 0px;font-size: 12px;text-align: center;}
- #nav>li i{display: inline-block; height: 12px; width:12px; margin-right: 8px;background: url(../images/home.png) left bottom no-repeat;}
- #nav>li ul{position: absolute;left: -40px;top: 47px; width: 180px;background-color: #fff;padding: 20px;display: none;
- border:1px solid #ECEFF5;}
- #nav>li ul li{margin-bottom: 10px;}
- #nav>li ul a{font-size: 13px;color: #606060;}
- .this{border-bottom: 2px solid #b0b;}
- #nav>li:hover ul{display:block;}
- #nav>li:hover{border-bottom: 2px solid #0bb;}
- 多级导航,转自http://blog.csdn.net/rabbitter/article/details/51125337
- swift UINavigationController 导航控制器(六)【转自http://blog.csdn.net/zhang_biao_1991/article/details/313927】
- 转自 http://blog.csdn.net/coollofty/article/details/8058859
- 转自http://blog.csdn.net/rookieding/article/details/7639898
- 转自http://blog.csdn.net/mazhaojuan/article/details/7660657
- 转自: http://blog.csdn.net/ahuier/article/details/8982516
- 转自: http://blog.csdn.net/xiaxiaorui2003/article/details/3838631
- 转自 http://blog.csdn.net/gnehcuoz/article/details/52686824
- 转自 http://blog.csdn.net/g_brightboy/article/details/14229139
- 转载自http://blog.csdn.net/fei20072050104/article/details/21785565
- 转载自:http://blog.csdn.net/lmj623565791/article/details/24015867
- 转载自 http://blog.csdn.net/racehorse/article/details/6593719
- 转载自http://blog.csdn.net/zhengzhihust/article/details/44151785
- 转载自http://blog.csdn.net/huxu981598436/article/details/51626569
- 转载自http://blog.csdn.net/lwyygydx/article/details/41870377
- 转载自:http://blog.csdn.net/go_hyp/article/details/53693058
- 转载自 http://blog.csdn.net/bieleyang/article/details/76973220
- 转载自http://blog.csdn.net/wwww1988600/article/details/7309070
- 连接tcp服务器出现的问题及解决方法
- hibernate 一对一注解配置及实体属性条件查询
- Android 6.0权限申请明细
- CHAR 与 VARCHAR的区别
- UDP简介
- 多级导航,转自http://blog.csdn.net/rabbitter/article/details/51125337
- Spring初始化
- python 获取页面表格数据存放到csv中
- centos系统服务配置初始化
- windows下配置mingw的方法:theano+keras+mingw
- Android常用开源项目(三十二)
- dpdk之多进程client_server_mp源代码分析
- js 数组去重5个常用算法
- python 调用Google Translate API 翻译