原生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 相关文章推荐
插件:检测javascript的内存泄漏
Mar 04 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
Dec 26 Javascript
阻止子元素继承父元素事件具体思路及实现
May 02 Javascript
如何让DIV可编辑、可拖动示例代码
Sep 18 Javascript
JQuery实现动态添加删除评论的方法
May 18 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
Jun 12 Javascript
微信小程序 详解页面跳转与返回并回传数据
Feb 13 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
Mar 13 Javascript
AngularJS  ng-repeat遍历输出的用法
Jun 19 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
Nov 11 Javascript
基于jQuery的时间戳与日期间的转化
Jun 21 jQuery
js制作提示框插件
Dec 24 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使用Imagick生成图片的方法
2015/07/31 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
2016/01/27 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
Angularjs实现mvvm式的选项卡示例代码
2016/09/08 Javascript
jquery dataTable 后台加载数据并分页实例代码
2017/06/07 jQuery
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
2017/09/02 Javascript
使用vue点击li,获取当前点击li父辈元素的属性值方法
2018/09/12 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
Vue实现圆环进度条的示例
2021/02/06 Vue.js
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
python比较两个列表是否相等的方法
2015/07/28 Python
python在不同层级目录import模块的方法
2016/01/31 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
python查看模块,对象的函数方法
2018/10/16 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
Sneaker Studio乌克兰:购买运动鞋
2018/03/26 全球购物
销售心得体会
2014/01/02 职场文书
养殖项目策划书范文
2014/01/13 职场文书
数控技术专业毕业自荐书范文
2014/02/05 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
Python基础之元组与文件知识总结
2021/05/19 Python
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang