一个可以拓展的垂直多级导航栏 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到下一个页面的时候是需要导航栏的,如 ...
随机推荐
- bootstrap之 Badge 角标
添加 .am-badge class 到 <div> 或者 <span> 元素. 默认样式 <span class="am-badge"> ...
- C++ 析构函数为虚函数
1.原因: 在实现多态时, 当用基类指针操作派生类, 在析构时候防止只析构基类而不析构派生类. 2.例子: (1). #include<iostream> using namespace ...
- makefile常用指令和常见变量。
引用文章A:http://blog.csdn.net/liang13664759/article/details/1771246 文章介绍:非常详细的文章,讲解上都是比较基础的知识. 本文可能会持续更 ...
- CDZSC_2015寒假新人(1)——基础 e
Description Julius Caesar lived in a time of danger and intrigue. The hardest situation Caesar ever ...
- Candy Bags
读懂了题就会发现这是个超级大水题 Description Gerald has n younger brothers and their number happens to be even. One ...
- Spring配置扫描mybatis的mapper文件注意:
一般会将不业务的mapper文件放到不同的包中: spring配置扫描就需要配置下面的方式(两个*): <!-- mybatis文件配置,扫描所有mapper文件 --> <bean ...
- [转]gcc -I -L -l区别
我们用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录: 例: gcc -o hello hello.c -I /home/hello/inc ...
- js的框架
Ember.js的一些学习总结 1.1.1 摘要 现在,我们经常都可以看到复杂的JavaScript应用程序,由于这些应用程序变得越来越复杂,一长串的jQuery回调语句或者通过应用程序在各个状态 ...
- GIS 相关知识扫盲
1.什么是GIS GIS:地理信息系统,它是一种特定的十分重要的空间信息系统.它是在计算机硬.软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集.储存.管理.运算.分析 ...
- [Linux]shell编程基础/linux基础入门
声明执行程序 #!/bin/bash 用来告诉系统使用/bin/bash 程序来执行该脚本.譬如python 脚本,可以这样写: #!/usr/bin/python 赋值和引用 赋值公式: 变量名 ...