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 相关文章推荐
TinyMCE 新增本地图片上传功能
Nov 05 Javascript
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
Nov 14 Javascript
浅析js中取绝对值的2种方法
Jul 09 Javascript
Bootstrap每天必学之前端开发框架
Nov 19 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
Aug 01 Javascript
微信小程序进行微信支付的步骤昂述
Dec 01 Javascript
BootStrapTable 单选及取值的实现方法
Jan 10 Javascript
解决低版本的浏览器不支持es6的import问题
Mar 09 Javascript
在小程序中使用canvas的方法示例
Sep 17 Javascript
在layui中select更改后生效的方法
Sep 05 Javascript
webpack是如何实现模块化加载的方法
Nov 06 Javascript
H5实现手机拍照和选择上传功能
Dec 18 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 清除网页病毒的方法
2008/12/05 PHP
PHP实现时间轴函数代码
2011/10/08 PHP
PHP批量生成静态HTML的简单原理和方法
2014/04/20 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
window.opener用法和用途实例介绍
2013/08/19 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
jQuery实现垂直半透明手风琴特效代码分享
2015/08/21 Javascript
vue.js之vue-cli脚手架的搭建详解
2017/05/05 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
介绍Python的@property装饰器的用法
2015/04/28 Python
Python利用ansible分发处理任务
2015/08/04 Python
Python变量和字符串详解
2017/04/29 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
如何通过命令行进入python
2020/07/06 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
初二政治教学反思
2014/01/12 职场文书
优秀班干部事迹材料
2014/01/26 职场文书
体育教师自我鉴定
2014/02/12 职场文书
面试必备的求职信
2014/05/25 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
法学专业求职信范文
2015/03/19 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
2016年员工政治思想表现评语
2015/12/02 职场文书
如何才能写好调研报告?
2019/07/03 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python
基于angular实现树形二级表格
2021/10/16 Javascript