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 相关文章推荐
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
Apr 25 Javascript
jQuery getJSON 处理json数据的代码
Jul 26 Javascript
将string解析为json的几种方式小结
Nov 11 Javascript
jquery插件开发方法(初学者)
Feb 03 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
Apr 03 Javascript
JS+CSS实现美化的下拉列表框效果
Aug 11 Javascript
原生JS实现旋转木马式图片轮播插件
Apr 25 Javascript
聊一聊JS中的prototype
Sep 29 Javascript
微信小程序多列选择器range-key使用详解
Mar 30 Javascript
vue项目打包后打开页面空白解决办法
Jun 29 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
May 29 Javascript
javascript 代码是如何被压缩的示例代码
May 06 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
建立文件交换功能的脚本(三)
2006/10/09 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
Array.prototype 的泛型应用分析
2010/04/30 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
用原生js做个简单的滑动效果的回到顶部
2014/10/15 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
关于前后端json数据的发送与接收详解
2017/07/30 Javascript
webpack配置sass模块的加载的方法
2017/07/30 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
浅谈vue-cli 3.0.x 初体验
2018/04/11 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
webpack常用配置总览(小结)
2019/11/18 Javascript
js实现盒子滚动动画效果
2020/08/09 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
Python实现的石头剪子布代码分享
2014/08/22 Python
Python中有趣在__call__函数
2015/06/21 Python
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
Python实现完整的事务操作示例
2017/06/20 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
Django forms组件的使用教程
2018/10/08 Python
Python supervisor强大的进程管理工具的使用
2019/04/24 Python
Python利用requests模块下载图片实例代码
2019/08/12 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
python实现吃苹果小游戏
2020/03/21 Python
如何用Python徒手写线性回归
2021/01/25 Python
英国最大的百货公司:Harrods
2016/08/18 全球购物
javascript Number 与 Math对象的介绍
2021/11/17 Javascript