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 相关文章推荐
JavaScript中的this实例分析
Apr 28 Javascript
js怎么判断flash swf文件是否加载完毕
Aug 14 Javascript
javascript实现的一个随机点名功能
Aug 26 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
Dec 13 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
Oct 28 Javascript
详解jQuery简单的表格应用
Dec 16 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
Dec 25 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
Jan 03 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
Apr 26 jQuery
vue中子组件调用兄弟组件方法
Jul 06 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
Jul 13 Javascript
微信小程序实现的自定义分享功能示例
Feb 12 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
使用 MySQL 开始 PHP 会话
2006/12/21 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
PHP 验证登陆类分享
2015/03/13 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
解密效果
2006/06/23 Javascript
JavaScript 计算当天是本年本月的第几周
2009/03/22 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
通过正则格式化url查询字符串实现代码
2012/12/28 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
编写高性能Javascript代码的N条建议
2015/10/12 Javascript
全系IE支持Bootstrap的解决方法
2015/10/19 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
python多线程扫描端口示例
2014/01/16 Python
python中模块的__all__属性详解
2017/10/26 Python
Django开发中复选框用法示例
2018/03/20 Python
windows10下python3.5 pip3安装图文教程
2018/04/02 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
计算机二级python学习教程(1) 教大家如何学习python
2019/05/16 Python
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
大一学生假期实习的自我评价
2013/10/12 职场文书
市场营销管理制度
2014/01/29 职场文书
小学领导班子对照材料
2014/08/23 职场文书
优质服务标语口号
2015/12/26 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python