JavaScript实现的经典文件树菜单效果


Posted in Javascript onSeptember 08, 2015

本文实例讲述了JavaScript实现的经典文件树菜单效果。分享给大家供大家参考。具体如下:

这是一款简单的JavaScript文件树菜单,经典的树形菜单,特别是文件夹的样式比较经典,折叠和展开也很流畅自然,不过本款菜单有一个缺点,就是菜单的数据写在JS的数组里,这样一来多多少少对菜单内容的修改造成一定麻烦。

先来看看运行效果截图:

JavaScript实现的经典文件树菜单效果

在线演示地址如下:

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>简单的文件树效果</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
.tree{width:200px;border:2px inset #fff;height:400px;padding:5px;overflow:auto;}
.tree dd,.tree dt, .tree dl{margin:0;padding:0;overflow:hidden;}
.tree dd{margin-left:18px;}
.tree dt{background:url(images/tree-bg.png) no-repeat 0 0px;padding-left:35px;line-height :20px;height:20px;}
.tree dt.node-close{background-position: 0 -24px;}
.tree dt.node-open{background-position: 0 -58px;}
.tree dt a{color:#000;text-decoration:none;font: 12px/1 verdana;line-height :12px;_line-height :16px;}
.tree dt a:hover{background:#0A246A;color:#fff;}
</style>
</head>
<body>
<div id="esunTree" class="tree"></div>
</body>
<script type="text/javascript">
try{document.execCommand("BackgroundImageCache",false,true)}catch(e){};
function Tree(data, el) {
 this.app=function(par,tag){return par.appendChild(document.createElement(tag))};
 this.create(document.getElementById(el),data)
};
Tree.fn = Tree.prototype = {
 create: function (par,group){
  var host=this, length = group.length;
  for (var i = 0; i < length; i++) {
   var dl =this.app(par,'DL'), dt = this.app(dl,'DT'), dd = this.app(dl,'DD');
   dt.innerHTML='<a href="javascript:void(0)">'+group[i]['t']+'</a>';
   if (!group[i]['s'])continue;
   dt.group=group[i]['s'];
   dt.className+=" node-close";
   dt.onclick=function (){
    var dd= this.nextSibling;
    if (!dd.hasChildNodes()){
      host.create(dd,this.group);
      this.className='node-open'
     }else{
     var set=dd.style.display=='none'?['','node-open']:['none','node-close'];
      dd.style.display=set[0];
      this.className=set[1]
     }
   }
  }
 }
};
var data=[{
  t:'腾讯网络限公司',s:[
   {t:'人力资源',s:[{t:'张A'}]},
   {t:'风险控制',s:[{t:'李B'},{t:'赵C'},{t:'吴D'},{t:'司马E'},{t:'潭F'},{t:'袁G'}]},
   {t:'系统平台',s:[{t:'资讯组',s:[{t:'王五'}]},{t:'游戏组',s:[{t:'肖十三'}]}]}
  ]
 },
 {t:'拍拍网',s:[{t:'胡一刀'}]},
 {t:'盛大网络',s:[{t:'热血传奇',s:[{t:'在线充值'}]},{t:'陈天桥'}]},
 {t:'新浪微博',s:[{t:'凤姐'}]}
];
var et=new Tree(data,'esunTree');
 //]]>
</script>
</html>

希望本文所述对大家的JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Prototype Array对象 学习
Jul 19 Javascript
侧栏跟随滚动的简单实现代码
Mar 18 Javascript
jquery选择器、属性设置用法经验总结
Sep 08 Javascript
DIV+CSS+jQ实现省市联动可扩展
Jun 22 Javascript
jquery选择器中的空格与大于号&gt;、加号+与波浪号~的区别介绍
Jun 24 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
Sep 04 Javascript
JavaScript 闭包机制详解及实例代码
Oct 10 Javascript
React如何利用相对于根目录进行引用组件详解
Oct 09 Javascript
其实你可以少写点if else与switch(推荐)
Jan 10 Javascript
JS实现秒杀倒计时特效
Jan 02 Javascript
Vue自动构建发布脚本的方法示例
Jul 24 Javascript
动态实现element ui的el-table某列数据不同样式的示例
Jan 22 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
Sep 08 #Javascript
JS实现的另类手风琴效果网页内容切换代码
Sep 08 #Javascript
cocos2dx骨骼动画Armature源码剖析(一)
Sep 08 #Javascript
js带点自动图片轮播幻灯片特效代码分享
Sep 07 #Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
Sep 07 #Javascript
js图片轮播特效代码分享
Sep 07 #Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
Sep 07 #Javascript
You might like
PHP函数utf8转gb2312编码
2006/12/21 PHP
php mysql Errcode: 28 终极解决方法
2009/07/01 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
php编写简单的文章发布程序
2015/06/18 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
读jQuery之八 包装事件对象
2011/06/21 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
JS 组件系列之BootstrapTable的treegrid功能
2017/06/16 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
AngularJS使用ng-repeat遍历二维数组元素的方法详解
2017/11/11 Javascript
Angular 项目实现国际化的方法
2018/01/08 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
原生JavaScript实现的无缝滚动功能详解
2020/01/17 Javascript
Python中运算符&quot;==&quot;和&quot;is&quot;的详解
2016/10/08 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
Python求离散序列导数的示例
2019/07/10 Python
Python超越函数积分运算以及绘图实现代码
2019/11/20 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
python如何支持并发方法详解
2020/07/25 Python
如何编写python的daemon程序
2021/01/07 Python
C++是不是类型安全的
2014/02/18 面试题
25岁生日感言
2014/01/13 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
2014年党小组工作总结
2014/12/20 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书
大学生就业意向书
2015/05/11 职场文书
pytorch实现线性回归以及多元回归
2021/04/11 Python
python 自动化偷懒的四个实用操作
2021/04/11 Python
Kubernetes控制节点的部署
2022/04/01 Servers