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 相关文章推荐
Firefox下提示illegal character并出现乱码的原因
Mar 25 Javascript
有趣的javascript数组定义方法
Sep 10 Javascript
javascript基础之查找元素的详细介绍(访问节点)
Jul 05 Javascript
Javascript中获取对象的原型对象的方法小结
Feb 25 Javascript
jQuery on()方法使用技巧详解
Apr 16 Javascript
微信jssdk在iframe页面失效问题的解决措施
Mar 03 Javascript
Bootstrap3.0学习教程之JS折叠插件
May 27 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
Jun 11 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
Nov 15 Javascript
在移动端使用vue-router和keep-alive的方法示例
Dec 02 Javascript
简述Vue中容易被忽视的知识点
Dec 09 Javascript
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
Apr 03 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中替换换行符的几种方法小结
2012/10/15 PHP
IE、FF、Chrome浏览器中的JS差异介绍
2013/08/13 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
javascript基本语法
2016/05/31 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
jQuery第一次运行页面默认触发点击事件的实例
2018/01/10 jQuery
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
Python编程中time模块的一些关键用法解析
2016/01/19 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
pandas实现选取特定索引的行
2018/04/20 Python
用python生成1000个txt文件的方法
2018/10/25 Python
浅析python的优势和不足之处
2018/11/20 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
CSS3 mask 遮罩的具体使用方法
2017/11/03 HTML / CSS
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
班主任远程培训研修日志
2015/11/13 职场文书
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis