纯javascript响应式树形菜单效果


Posted in Javascript onNovember 10, 2015

简要教程
aimaraJS是一款非常实用的纯javascript响应式多级目录树结构插件。该目录树可以动态添加和删除树节点,可以制作多级树结构,每个节点上可以都带有右键上下文菜单,并且每个节点上都可以配置不同的图标。它的特点有:

  • 可以创建一个基本的树结构并渲染它。
  • 可以实时添加和删除树节点。
  • 可以显示不同的树节点图标。
  • 在树节点打开和关闭的时候可以自定义事件。
  • 每个树节点上都可以制作右键上下文菜单。

 纯javascript响应式树形菜单效果

使用方法
使用该幻灯片插件需要在页面中引入Aimara.css和Aimara.js文件。

<link rel="stylesheet" href="css/Aimara.css" />
<script src="js/Aimara.js"></script>

 HTML结构

可以使用一个空的<div>来作为这个目录树的容器。

<div id="div_tree"></div>

JAVASCRIPT

然后你可以通过下面的方法来初始化该目录树插件。你可以创建一些树节点和子节点,然后渲染它们。节点可以在树被渲染之前或之后添加到树结构中。

<script type="text/javascript">
  window.onload = function() {
    //创建树结构
    var tree = createTree('div_tree','white');
    //创建树节点node1
    var node1 = tree.createNode('First node',false,'images/star.png',null,null,null);
    //node1添加到树结构中
    node1.createChildNode('First child node', false, 'images/blue_key.png',null,null);
    //渲染树结构
    tree.drawTree();
    //创建第二个树节点
    node1 = tree.createNode('Second node',false,'images/star.png',null,null,null);
    node1.createChildNode('Second child node', false, 'images/blue_key.png',null,null);
  };
</script>

为树节点创建上下文菜单

可以通过下面的方法来创建一个右键上下文菜单。

var contex_menu = {
 'context1' : {
  elements : [
   {
    text : 'Node Actions',
    icon: 'images/blue_key.png',
    action : function(node) {
 
    },
    submenu: {
     elements : [
      {
       text : 'Toggle Node',
       icon: 'images/leaf.png',
       action : function(node) {
        node.toggleNode();
       }
      },
      {
       text : 'Expand Node',
       icon: 'images/leaf.png',
       action : function(node) {
        node.expandNode();
       }
      },
      {
       text : 'Collapse Node',
       icon: 'images/leaf.png',
       action : function(node) {
        node.collapseNode();
       }
      },
      {
       text : 'Expand Subtree',
       icon: 'images/tree.png',
       action : function(node) {
        node.expandSubtree();
       }
      },
      {
       text : 'Collapse Subtree',
       icon: 'images/tree.png',
       action : function(node) {
        node.collapseSubtree();
       }
      },
      {
       text : 'Delete Node',
       icon: 'images/delete.png',
       action : function(node) {
        node.removeNode();
       }
      },
     ]
    }
   },
   {
    text : 'Child Actions',
    icon: 'images/blue_key.png',
    action : function(node) {
 
    },
    submenu: {
     elements : [
      {
       text : 'Create Child Node',
       icon: 'images/add1.png',
       action : function(node) {
        node.createChildNode('Created',false,'images/folder.png',null,'context1');
       }
      },
      {
       text : 'Create 1000 Child Nodes',
       icon: 'images/add1.png',
       action : function(node) {
        for (var i=0; i<1000; i++)
         node.createChildNode('Created -' + i,false,'images/folder.png',null,'context1');
       }
      },
      {
       text : 'Delete Child Nodes',
       icon: 'images/delete.png',
       action : function(node) {
        node.removeChildNodes();
       }
      }
     ]
    }
   }
  ]
 }
};

然后通过下面的方法来初始化树结构:

tree = createTree('div_tree','white',contex_menu);
tree.drawTree();

在树结构渲染之后实时添加一个树节点:

tree.createNode('Real Time',false,'images/leaf.png',null,null,'context1');

 以上就是本文的全部内容,为大家介绍了一款纯js响应式实现树结构菜单栏的特效,希望大家喜欢。

Javascript 相关文章推荐
javascript学习随笔(使用window和frame)的技巧
Mar 08 Javascript
用javascript实现的支持lrc歌词的播放器
May 17 Javascript
日期 时间js控件
May 07 Javascript
理解Javascript_06_理解对象的创建过程
Oct 15 Javascript
三级下拉菜单的js实现代码
May 23 Javascript
新浪微博字数统计 textarea字数统计实现代码
Aug 28 Javascript
JSONP 跨域共享信息
Aug 16 Javascript
c#程序员对TypeScript的认识过程
Jun 19 Javascript
javascript实现rgb颜色转换成16进制格式
Jul 10 Javascript
全屏滚动插件fullPage.js使用实例解析
Oct 21 Javascript
JS自定义滚动条效果简单实现代码
Oct 27 Javascript
npm scripts 使用指南详解
Oct 08 Javascript
JavaScript中SetInterval与setTimeout的用法详解
Nov 10 #Javascript
深入解析JavaScript编程中的this关键字使用
Nov 09 #Javascript
3种js实现string的substring方法
Nov 09 #Javascript
举例讲解JavaScript substring()的使用方法
Nov 09 #Javascript
js中substring和substr两者区别和使用方法
Nov 09 #Javascript
浅析js中substring和substr的方法
Nov 09 #Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
Nov 09 #Javascript
You might like
ezSQL PHP数据库操作类库
2010/05/16 PHP
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
CSS3 3D 技术手把手教你玩转
2016/09/02 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
详解Python中的__new__()方法的使用
2015/04/09 Python
python 队列详解及实例代码
2016/10/18 Python
python基本语法练习实例
2017/09/19 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
使用Python实现从各个子文件夹中复制指定文件的方法
2018/10/25 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
2019/08/08 Python
python matplotlib折线图样式实现过程
2019/11/04 Python
Python实现爬取并分析电商评论
2020/06/19 Python
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
五年级学生评语
2014/04/22 职场文书
艺术节开幕词
2015/01/28 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
Python中使用subprocess库创建附加进程
2021/05/11 Python
zabbix agent2 监控oracle数据库的方法
2021/05/13 Oracle
Python办公自动化解决world文件批量转换
2021/09/15 Python
Ajax实现异步加载数据
2021/11/17 Javascript
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL