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 对表格的行和列都能加亮显示
Dec 26 Javascript
ExtJS 工具栏 分页事件参数
Mar 05 Javascript
JavaScript_ECMA5数组新特性详解
Jun 12 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
Jun 03 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
Jul 08 jQuery
前端主流框架vue学习笔记第一篇
Jul 26 Javascript
基于node.js之调试器详解
Aug 22 Javascript
webpack构建的详细流程探底
Jan 08 Javascript
vue 基于element-ui 分页组件封装的实例代码
Dec 10 Javascript
微信公众平台获取access_token的方法步骤
Mar 29 Javascript
详解javascript void(0)
Jul 13 Javascript
解决vue打包 npm run build-test突然不动了的问题
Nov 13 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里的中文变量说明
2011/07/23 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
限制复选框的最大可选数
2006/07/01 Javascript
javascript 混合的构造函数和原型方式,动态原型方式
2009/12/07 Javascript
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
JS高仿抛物线加入购物车特效实现代码
2017/02/20 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
基于js中document.cookie全面解析
2017/09/14 Javascript
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
2019/01/23 Javascript
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
为vue项目自动设置请求状态的配置方法
2019/06/09 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
JS如何把字符串转换成json
2020/02/21 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
python根据路径导入模块的方法
2014/09/30 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
保加利亚手表、香水、化妆品和珠宝购物网站:Brasty.bg
2020/04/22 全球购物
《鸟岛》教学反思
2014/04/26 职场文书
民间个人借款协议书
2014/09/30 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
tensorflow+k-means聚类简单实现猫狗图像分类的方法
2021/04/28 Python
怎么用Python识别手势数字
2021/06/07 Python
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS
Python中super().__init__()测试以及理解
2021/12/06 Python