纯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 相关文章推荐
Jquery跳到页面指定位置的方法
May 12 Javascript
深入解读JavaScript中的Hoisting机制
Aug 12 Javascript
Bootstrap中表单控件状态(验证状态)
Aug 04 Javascript
基于JavaScript实现活动倒计时效果
Apr 20 Javascript
JavaScript中 DOM操作方法小结
Apr 25 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
Oct 17 Javascript
js实现各浏览器全屏代码实例
Jul 03 Javascript
jQuery实现网页拼图游戏
Apr 22 jQuery
从vue源码看props的用法
Jan 09 Javascript
小程序中canvas的drawImage方法参数使用详解
Jul 04 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
Oct 28 Javascript
使用Ajax实现无刷新上传文件
Apr 12 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
数据库中排序的对比及使用条件详解
2012/02/23 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
深入浅析react native es6语法
2015/12/09 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
JS for...in 遍历语句用法实例分析
2016/08/24 Javascript
JS实现DIV高度自适应窗口示例
2017/02/16 Javascript
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
基于vue中css预加载使用sass的配置方式详解
2018/03/13 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
python实现批量监控网站
2016/09/09 Python
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
2020/06/04 Python
python如何调用百度识图api
2020/09/29 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
电台编导求职信
2014/05/06 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
三问三解心得体会
2014/09/05 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
吃通javascript正则表达式
2021/04/21 Javascript
Golang ort 中的sortInts 方法
2022/04/24 Golang