原生js做的手风琴效果的导航菜单


Posted in Javascript onNovember 08, 2013

做好的手风琴效果如下,具体看代码:
原生js做的手风琴效果的导航菜单 
html代码

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Accordion</title> 
<style> 
#accordion{ 
width:200px; 
} 
#accordion ul{ 
list-style: none; 
display:none; 
} 
.first-level{ 
background-color: #d8d8d8; 
background-color: rgba(236, 208, 208, 0.53); 
border-radius: 4px; 
display: block; 
cursor: pointer; 
position: relative; 
margin: 2px 0 0 0; 
padding: 8px; 
min-height: 0; 
} 
</style> 
</head> 
<body> 
<div id="accordion"> 
<div> 
<h3 class="first-level">level one</h3> 
<ul> 
<li>first item</li> 
<li>second item</li> 
<li>third item</li> 
</ul> 
</div> 
<div> 
<h3 class="first-level">level one</h3> 
<ul> 
<li>first item</li> 
<li>second item</li> 
<li>third item</li> 
</ul> 
</div> 
<div> 
<h3 class="first-level">level one</h3> 
<ul> 
<li>first item</li> 
<li>second item</li> 
<li>third item</li> 
</ul> 
</div> 
</div> 
<script src="common.js"></script> 
<script> 
var heads = document.querySelectorAll(".first-level"); 
function headClick(event){ 
var target = EventUtil.getTarget(event); 
toggleDisplay(target.parentNode.querySelector("ul")); 
} 
for(var i=0;i<heads.length;i++){ 
EventUtil.addHandler(heads[i], "click", headClick); 
} window.onunload = function (){ 
for(var i=0;i<heads.length;i++){ 
EventUtil.removeHandler(heads[i], "click", headClick); 
} 
heads = null; 
}

common.js文件
var EventUtil = { 
addHandler : function (element, type, handler) { 
if (element.addEventListener) { 
element.addEventListener(type, handler, false); 
} else if (element.attachEvent) { 
element.attachEvent("on" + type, handler); 
} else { 
element["on" + type] = handler; 
} 
}, 
removeHandler : function (element, type, handler) { 
if (element.removeEventListener) { 
element.removeEventListener(type, handler, false); 
} else if (element.detachEvent) { 
element.detachEvent("on" + type, handler); 
} else { 
element["on" + type] = null; 
} 
}, 
getEvent : function (event) { 
return event || window.event; 
}, 
getTarget : function (event) { 
return event.target || event.srcElement; 
} 
} 
var getStyle = function (el, style) { 
if (el.currentStyle) { 
style = style.replace(/\-(\w)/g, function (all, letter) { 
return letter.toUpperCase(); 
}); 
var value = el.currentStyle[style]; 
return value; 
} else { 
return document.defaultView.getComputedStyle(el, null).getPropertyValue(style); 
} 
} 

var toggleDisplay = function (element) { 
var display = getStyle(element, "display"); 
if (display == "none") { 
element.style.display = "block"; 
} else { 
element.style.display = "none"; 
} 
}
Javascript 相关文章推荐
jQuery事件 delegate()使用方法介绍
Oct 30 Javascript
jQuery实现div浮动层跟随页面滚动效果
Feb 11 Javascript
js中array的sort()方法使用介绍
Feb 20 Javascript
javascript实现的一个随机点名功能
Aug 26 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
Feb 03 Javascript
jQuery的css() 方法使用指南
May 03 Javascript
百度地图api如何使用
Aug 03 Javascript
关于Javascript中document.cookie的使用
Mar 08 Javascript
Angular 4.x 路由快速入门学习
May 03 Javascript
jquery制作的移动端购物车效果完整示例
Feb 24 jQuery
Vue项目中数据的深度监听或对象属性的监听实例
Jul 17 Javascript
vue生命周期钩子函数以及触发时机
Apr 26 Vue.js
jquery 日期控件datepicker属性详细解析
Nov 08 #Javascript
jquery增加时编辑jqGrid(实例代码)
Nov 08 #Javascript
jqueyr判断checkbox组的选中(示例代码)
Nov 08 #Javascript
iframe子父页面调用js函数示例
Nov 07 #Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
Nov 07 #Javascript
Checbox的操作含已选、未选及判断代码
Nov 07 #Javascript
js操作label给label赋值及取label的值示例
Nov 07 #Javascript
You might like
php生成shtml类用法实例
2014/12/09 PHP
php用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
2015/03/19 PHP
php中switch语句用法详解
2015/08/17 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
Node.js 条形码识别程序构建思路详解
2016/02/14 Javascript
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
React实现阿里云OSS上传文件的示例
2020/08/10 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
pycharm 使用心得(一)安装和首次使用
2014/06/05 Python
python下调用pytesseract识别某网站验证码的实现方法
2016/06/06 Python
Python内置函数reversed()用法分析
2018/03/20 Python
Python 忽略warning的输出方法
2018/10/18 Python
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
2016/11/20 面试题
校园安全教育广播稿
2014/02/17 职场文书
项目合作协议书
2014/09/23 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
2015学校年度工作总结
2015/05/11 职场文书
2016年度员工工作表现评语
2015/12/02 职场文书
2019年聘任书的写作格式及范文!
2019/07/03 职场文书