一个可以拓展的垂直多级导航栏 Demo
大四党忙忙碌碌找工作,博客荒废久矣,可谓:终日昏昏醉梦间,忽闻春尽强登山。因过竹院逢僧话,偷得浮生半日闲。
这是个垂直的导航栏,可以有无限多层的子级菜单,看代码注释就够了:
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>sidebarMenu</title>
</head> <ul id="menuid">
<li><a href="#">1</a></li>
<li>
<a href="#">2</a>
<ul>
<li><a href="#">Sub 2.1</a></li>
<li><a href="#">Sub 2.2</a></li>
</ul>
</li>
<li>
<a href="#">3</a>
<ul>
<li><a href="#">Sub 3.1</a></li>
<li>
<a href="#">Sub 3.2</a>
<ul>
<li><a href="#">Sub 3.2.1</a></li>
<li><a href="#">Sub 3.2.2</a></li>
<li><a href="#">Sub 3.2.3</a></li>
<li><a href="#">Sub 3.2.4</a></li>
</ul>
</li>
</ul>
</li>
</ul> <style type="text/css">
ul {margin:0;padding:0;width:180px;list-style-type:none;}
/* 要先设置为visibility:hidden(这时<ul>才有宽度,子<ul>才能计算左距),最后用JS处理它 */
ul ul {position:absolute;width:170px;top:0;visibility:hidden;}
li {position:relative;border-bottom:1px solid black;}
a {_height:1%;display:block;padding:6px;color:white;background:gray;text-decoration:none;}
a:hover {background:black;}
</style>
<script type="text/javascript">
initialMenu();
function initialMenu() {
var menuid = document.getElementById("menuid");
// 主<ul>下的所有<ul>,包括二级和三级的
var ultags = menuid.getElementsByTagName("ul");
for(var t=0,len=ultags.length;t<len;t++) {
// <ul>同胞<a>添加类,即hover该<a>会显示该<ul>
ultags[t].parentNode.getElementsByTagName("a")[0].className += "subfolderstyle";
if(ultags[t].parentNode.parentNode===menuid) {
// 如果该<ul>是第一层Submenu,左距等于主Mainmenu宽
ultags[t].style.left = ultags[t].parentNode.offsetWidth+'px';
} else {
// 如不是第一层Submenu,则父<ul>下的第一个<a>的宽度,也就是上一级Submenu的宽度
ultags[t].style.left = ultags[t-1].getElementsByTagName("a")[0].offsetWidth+'px';
}
// parentNode是该<ul>上层的<li>
ultags[t].parentNode.onmouseenter = function() {
this.getElementsByTagName("ul")[0].style.display = "block";
}
ultags[t].parentNode.onmouseleave = function() {
this.getElementsByTagName("ul")[0].style.display = "none";
}
}
// 呼应CSS中的注释,计算完各个<ul>的left后就可以不占文档位置了
for (var t=ultags.length-1; t>-1; t--){
ultags[t].style.visibility="visible";
ultags[t].style.display="none";
}
}
</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
一个可以拓展的垂直多级导航栏 Demo的更多相关文章
- 基于jQuery垂直多级导航菜单代码
基于jQuery垂直多级导航菜单代码是一款黑色风格的jQuery竖直导航菜单特效下载.效果图如下: 在线预览 源码下载 实现的代码. html代码: <ul class="ce&q ...
- CSS制作一个简单网页的下拉导航栏
网页下拉导航栏的制作 网页下拉导航栏的制作很简单,只需要运用好CSS中伪选择器. 首先说明几个简单的伪选择器(比较常用的): link:连接平常的状态 visited:连接被访问过之后 hover:鼠 ...
- 使用bootstrap3.0搭建一个具有自定义风格的侧边导航栏
由于工作变动,新的项目组,可能会涉及到更多的类似于后台管理系统这一类的项目,而且开发可能更加偏向于传统型的开发,希望今后能够在新的项目中能够用得上vuejs吧! 接手项目的时候,就是一个后台管理系统, ...
- 固定导航栏demo
代码如下 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF- ...
- 1+X学习日志——导航栏demo
初级菜鸟的作品,各位大佬见笑了 <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- 巧妙使用checkbox制作纯css动态导航栏
前提:很多时候.我们的网页都需要一个垂直的导航栏.可以分类.有分类.自然就有展开.关闭的功能.你还在使用jquery操作dom来制作吗?那你就out了! 方案:使用checkbox 的 checked ...
- CSS 导航栏
实例: 导航栏 Home News Articles Forum Contact About 导航栏 熟练使用导航栏,对于任何网站都非常重要. 使用CSS你可以转换成好看的导航栏而不是枯燥的HTML菜 ...
- CSS:CSS 导航栏
ylbtech-CSS:CSS 导航栏 1.返回顶部 1. CSS 导航栏 导航栏 熟练使用导航栏,对于任何网站都非常重要. 使用CSS你可以转换成好看的导航栏而不是枯燥的HTML菜单. 导航栏=链接 ...
- iOS导航栏的正确隐藏方式【转】
简介:在项目中经常碰到首页顶部是无限轮播,需要靠最上面显示.有的设置导航栏为透明等一系列的方法,这个可以借助第三方.或者干脆简单粗暴的直接隐藏掉导航栏.可是push到下一个页面的时候是需要导航栏的,如 ...
随机推荐
- c#&.NET3.0高级程序设计-02 Enum Demo
Enum 实例 using System; using System.Collections.Generic; public class MyClass { enum EmpType ...
- C#中Spli、正则表达式分解字符串详解
一.String.Split方法提供了如下6个重载函数: 名称 说明 String.Split (Char[]) 返回包含此实例中的子字符串(由指定 Char 数组的元素分隔)的 String 数组. ...
- 反片语(map)
输入一些单词,找出所有满足如下条件的单词: 该单词不能通过字母重排,得到输入文本中的另外一个单词. 在判断是否满足条件时,不区分大小写,但输出保留输入中的大小写,按字典序进行排列(所有大写字母在小写字 ...
- Angular中Controller之间的信息传递(第二种办法):$emit,$broadcast,$on
$emit只能向parent controller传递event与data( $emit(name, args) ) $broadcast只能向child controller传递event与data ...
- Git for PyCharm
Git for PyCharm Using PyCharm's Git integration locally:http://confluence.jetbrains.com/display/PYH/ ...
- Rule Or WorkFlow
The main value of a Workflow engine is that it makes it possible to customize the flows through some ...
- delete 多表删除的使用(连表删除)
delete 多表删除的使用 1.从数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉 DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 或 DELETE ...
- C语言的本质(13)——指向指针的指针
指针可以指向基本类型,也可以指向复合类型,因此一个指针变量存放的可以是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量.由于指针变量直接指向变量,所以称为"单级间址".而 ...
- 如何让FPGA中的SPI与其他模块互动起来
在上一篇文章<FPGA的SPI从机模块实现>中,已经实现了SPI的从机模块,如何通过SPI总线与FPGA内部其他模块进行通信,是本文的主要讨论内容. 一. 新建FPGA内部DAC控制模块 ...
- 【LeetCode练习题】First Missing Positive
First Missing Positive Given an unsorted integer array, find the first missing positive integer. For ...