原生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 相关文章推荐
ext实现完整的登录代码
Aug 08 Javascript
学习ExtJS form布局
Oct 08 Javascript
struts2+jquery+json实现异步加载数据(自写)
Jun 24 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
Nov 22 Javascript
JS Replace 全部替换字符的用法小结
Dec 24 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
Mar 22 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
Apr 03 Javascript
不使用script导入js文件的几种方法
Oct 27 Javascript
AngularJS路由实现页面跳转实例
Mar 03 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
Jul 23 Javascript
微信小程序实现分享朋友圈的图片功能示例
Jan 18 Javascript
JS中的模糊查询功能
Dec 08 Javascript
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信号量基本用法实例详解
2016/02/12 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
javascript add event remove event
2008/04/07 Javascript
Firefox window.close()的使用注意事项
2009/04/11 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
2014/01/11 Javascript
初识Javascript小结
2015/07/16 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
jQuery利用sort对DOM元素进行排序操作
2016/11/07 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
2018/01/05 NodeJs
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
通过C++学习Python
2015/01/20 Python
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
python处理大数字的方法
2015/05/27 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
python实现俄罗斯方块
2018/06/26 Python
python远程连接MySQL数据库
2019/04/19 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
python的re模块使用方法详解
2019/07/26 Python
Python 爬取必应壁纸的实例讲解
2020/02/24 Python
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
经典优秀个人求职自荐信格式
2013/09/25 职场文书
军训的自我鉴定
2013/12/10 职场文书
反腐倡廉警示教育活动心得体会
2014/09/04 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书
公司行政管理制度范本
2015/08/05 职场文书
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL