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 相关文章推荐
json简单介绍
Jun 10 Javascript
通过event对象的fromElement属性解决热区设置主实体的一个bug
Dec 22 Javascript
仿猪八戒网左下角的文字滚动效果
Oct 28 Javascript
JS性能优化笔记搜索整理
Aug 21 Javascript
JS操作数据库的实例代码
Oct 17 Javascript
jQuery简单实现title提示效果示例
Aug 01 Javascript
Node.js包管理器Yarn的入门介绍与安装
Oct 17 Javascript
jquery.form.js异步提交表单详解
Apr 25 jQuery
9种使用Chrome Firefox 自带调试工具调试javascript技巧
Dec 22 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
Sep 03 Javascript
vuex存储token示例
Nov 11 Javascript
React中获取数据的3种方法及优缺点
Feb 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应用程序来获取Web服务器的状态信息
2006/10/09 PHP
PHP分页显示制作详细讲解
2006/10/09 PHP
使用PHP生成二维码的两种方法(带logo图像)
2014/03/14 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
ThinkPHP发送邮件示例代码
2016/10/08 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
javascript 获取select下拉列表值的代码
2009/09/07 Javascript
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
解决jquery异步按一定的时间间隔刷新问题
2012/12/10 Javascript
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
jQuery中append()方法用法实例
2014/12/25 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
Vue源码解析之数据响应系统的使用
2019/04/24 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
使用python统计文件行数示例分享
2014/02/21 Python
python的三目运算符和not in运算符使用示例
2014/03/03 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
Python实现搜索算法的实例代码
2020/01/02 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
小学学校评估方案
2014/06/08 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js