原生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 相关文章推荐
js 页面执行时间计算代码
Mar 04 Javascript
JS array 数组详解
Mar 22 Javascript
Mootools 1.2教程 类(一)
Sep 15 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
Dec 09 Javascript
js控制分页打印、打印分页示例
Feb 08 Javascript
php和js对数据库图片进行等比缩放示例
Apr 28 Javascript
JS实现环形进度条(从0到100%)效果
Jul 05 Javascript
JavaScript Uploadify文件上传实例
Feb 28 Javascript
vue实现app页面切换动画效果实例
May 23 Javascript
javascript将非数值转换为数值
Sep 13 Javascript
vue中使用极验验证码的方法(附demo)
Dec 04 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
Dec 10 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
世界上第一台立体声收音机
2021/03/01 无线电
基于mysql的bbs设计(三)
2006/10/09 PHP
php格式化工具Beautify PHP小小BUG
2008/04/24 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
为超链接加上disabled后的故事
2010/12/10 Javascript
js变量以及其作用域详解
2020/07/18 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
使用Phantomjs和Node完成网页的截屏快照的方法
2019/07/16 Javascript
JS实现的tab切换并显示相应内容模块功能示例
2019/08/03 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
python基础while循环及if判断的实例讲解
2017/08/25 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
python实现用户答题功能
2018/01/17 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
python实现简单颜色识别程序
2020/02/19 Python
Python3如何判断三角形的类型
2020/04/12 Python
荷兰手表网站:Watch2Day
2018/07/02 全球购物
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
集团薪酬管理制度
2014/01/13 职场文书
竞争性谈判邀请书
2014/02/06 职场文书
美术指导求职信
2014/03/17 职场文书
校庆标语集锦
2014/06/25 职场文书
地理科学专业自荐信
2014/09/01 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript