一个可以拓展的垂直多级导航栏 Demo

大四党忙忙碌碌找工作,博客荒废久矣,可谓:终日昏昏醉梦间,忽闻春尽强登山。因过竹院逢僧话,偷得浮生半日闲。

这是个垂直的导航栏,可以有无限多层的子级菜单,看代码注释就够了:

 1 <!DOCTYPE html>
 2 <head>
 3 <meta charset="UTF-8">
 4 <title>sidebarMenu</title>
 5 </head>
 6
 7 <ul id="menuid">
 8     <li><a href="#">1</a></li>
 9     <li>
10         <a href="#">2</a>
11         <ul>
12             <li><a href="#">Sub 2.1</a></li>
13             <li><a href="#">Sub 2.2</a></li>
14         </ul>
15     </li>
16     <li>
17         <a href="#">3</a>
18         <ul>
19             <li><a href="#">Sub 3.1</a></li>
20             <li>
21                 <a href="#">Sub 3.2</a>
22                 <ul>
23                     <li><a href="#">Sub 3.2.1</a></li>
24                     <li><a href="#">Sub 3.2.2</a></li>
25                     <li><a href="#">Sub 3.2.3</a></li>
26                     <li><a href="#">Sub 3.2.4</a></li>
27                 </ul>
28             </li>
29         </ul>
30     </li>
31 </ul>
32
33 <style type="text/css">
34     ul {margin:0;padding:0;width:180px;list-style-type:none;}
35     /* 要先设置为visibility:hidden(这时<ul>才有宽度,子<ul>才能计算左距),最后用JS处理它 */
36     ul ul {position:absolute;width:170px;top:0;visibility:hidden;}
37     li {position:relative;border-bottom:1px solid black;}
38     a {_height:1%;display:block;padding:6px;color:white;background:gray;text-decoration:none;}
39     a:hover {background:black;}
40 </style>
41 <script type="text/javascript">
42     initialMenu();
43     function initialMenu() {
44         var menuid = document.getElementById("menuid");
45         // 主<ul>下的所有<ul>,包括二级和三级的
46         var ultags = menuid.getElementsByTagName("ul");
47         for(var t=0,len=ultags.length;t<len;t++) {
48             // <ul>同胞<a>添加类,即hover该<a>会显示该<ul>
49             ultags[t].parentNode.getElementsByTagName("a")[0].className += "subfolderstyle";
50             if(ultags[t].parentNode.parentNode===menuid) {
51                 // 如果该<ul>是第一层Submenu,左距等于主Mainmenu宽
52                 ultags[t].style.left = ultags[t].parentNode.offsetWidth+‘px‘;
53             } else {
54                 // 如不是第一层Submenu,则父<ul>下的第一个<a>的宽度,也就是上一级Submenu的宽度
55                 ultags[t].style.left = ultags[t-1].getElementsByTagName("a")[0].offsetWidth+‘px‘;
56             }
57             // parentNode是该<ul>上层的<li>
58             ultags[t].parentNode.onmouseenter = function() {
59                 this.getElementsByTagName("ul")[0].style.display = "block";
60             }
61             ultags[t].parentNode.onmouseleave = function() {
62                 this.getElementsByTagName("ul")[0].style.display = "none";
63             }
64         }
65         // 呼应CSS中的注释,计算完各个<ul>的left后就可以不占文档位置了
66         for (var t=ultags.length-1; t>-1; t--){
67             ultags[t].style.visibility="visible";
68             ultags[t].style.display="none";
69         }
70     }
71 </script>

附上:

View Demo: http://xzh-loop.github.io/Manji/lab/demo/20141024-sidebarMenu.html

My Demo Catalogue:http://xzh-loop.github.io/Manji/lab/demo/catalogue.html

时间: 2024-10-21 04:06:16

一个可以拓展的垂直多级导航栏 Demo的相关文章

基于jQuery垂直多级导航菜单代码

基于jQuery垂直多级导航菜单代码是一款黑色风格的jQuery竖直导航菜单特效下载.效果图如下: 在线预览   源码下载 实现的代码. html代码: <ul class="ce"> <li> <a class="xz" href="#">目录A</a> </li> <li> <a href="#">目录B <img class=&qu

使用bootstrap3.0搭建一个具有自定义风格的侧边导航栏

由于工作变动,新的项目组,可能会涉及到更多的类似于后台管理系统这一类的项目,而且开发可能更加偏向于传统型的开发,希望今后能够在新的项目中能够用得上vuejs吧! 接手项目的时候,就是一个后台管理系统,而且采用了Bootstrap进行搭建,页面大致模型也基本搭建成功了.然后看到页面上有一个侧边栏,之前是他们从别的地方找出来的一个侧边栏,给人的感觉总是差那么点意思.所以重构了一下.具体的效果,请移步bootstrap-sidebar . 其实主要就解决了两个问题: 1.与内容等高,最小高度为一屏的高

巧妙使用checkbox制作纯css动态导航栏

前提:很多时候.我们的网页都需要一个垂直的导航栏.可以分类.有分类.自然就有展开.关闭的功能.你还在使用jquery操作dom来制作吗?那你就out了! 方案:使用checkbox 的 checked 属性.巧妙地制作导航栏 结果: 我们主要制作成这样这样的的导航栏: 首先.我们写出相对的html  由于时间问题.svg没有处理到类中.所以这里给出svg的空标签.大家如果想看效果.可以到我的git里面fork一份 <div class="nav-child"> <in

CSS 导航栏

实例: 导航栏 Home News Articles Forum Contact About 导航栏 熟练使用导航栏,对于任何网站都非常重要. 使用CSS你可以转换成好看的导航栏而不是枯燥的HTML菜单. 导航栏=链接列表 作为标准的HTML基础一个导航栏是必须的 .在我们的例子中我们将建立一个标准的HTML列表导航栏. 导航条基本上是一个链接列表,所以使用 <ul> 和 <li>元素非常有意义: 实例 <ul><li><a href="de

【转】【iOS】导航栏那些事儿

原文网址:http://www.jianshu.com/p/f797793d683f 参考文章 navigationItem UINavigationItem UINavigationBar UIBarButtonItem UIButton iOS 7 教程:定制iOS 7中的导航栏和状态栏 前言 本文试图阐释清楚导航栏相关的概念和用法,比如UINavigationBar和UINavigationItem的区别和联系,UIBarButtonItem的用法以及在纯代码和storyboard中有什么

一次性解决导航栏的所有问题

系统默认导航栏的返回按钮和返回方式 在默认情况下,导航栏返回按钮长这个样子 导航栏默认返回按钮 导航栏左上角的返回按钮,其文本默认为上一个ViewController的标题,如果上一个ViewController没有标题,则为Back(中文环境下为"返回"). 在默认情况下,导航栏返回的点击交互和滑动交互如下 默认导航栏交互 这些东西不需要任何设置和操作,因此也没有其他需要说明的地方. 自定义左上角的返回按钮 绝大多数情况下,我们都需要根据产品需求自定义左上角的返回按钮,虽然这对大多数

CSS3_3D导航栏

最近做了一个效果比较差的3d导航栏,(后续会更新,因为效果差的无以复加) 以此文鞭策自己. 贴上代码: 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>css3-3d导航栏</title> 5 <meta charset="utf-8" /> 6 <style type="text/css"> 7 *{ 8 padding: 0; 9 mar

【Bootstrap】导航栏navbar在PC上的缺陷与解决方案

在Bootstrap的官网上,提供了一种导航栏的组件: 只要在站点文件夹放好JQ与Bootstrap输入如下代码, <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml

iOS导航栏的正确隐藏方式【转】

简介:在项目中经常碰到首页顶部是无限轮播,需要靠最上面显示.有的设置导航栏为透明等一系列的方法,这个可以借助第三方.或者干脆简单粗暴的直接隐藏掉导航栏.可是push到下一个页面的时候是需要导航栏的,如何做了,这里给出两种方法. 第一种做法 -注意这里一定要用动画的方式隐藏导航栏,这样在使用滑动返回手势的时候效果最好,和上面动图一致.这样做有一个缺点就是在切换tabBar的时候有一个导航栏向上消失的动画. - (void)viewWillAppear:(BOOL)animated { [super