纯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 相关文章推荐
让textarea控件的滚动条怎是位与最下方
Apr 20 Javascript
该如何加载google-analytics(或其他第三方)的JS
May 13 Javascript
UpdatePanel和Jquery冲突的解决方法
Apr 01 Javascript
对比分析json及XML
Nov 28 Javascript
根据配置文件加载js依赖模块
Dec 29 Javascript
jQuery中offset()方法用法实例
Jan 16 Javascript
基于javascript制作微信聊天面板
Aug 09 Javascript
Bootstrap组件(一)之菜单
May 11 Javascript
jQuery表单事件实例代码分享
Aug 18 Javascript
一个极为简单的requirejs实现方法
Oct 20 Javascript
extjs简介_动力节点Java学院整理
Jul 17 Javascript
vue-cli 引入、配置axios的方法
May 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
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
node.js中的socket.io入门实例
2014/04/26 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
概述一个页面从输入URL到页面加载完的过程
2016/12/16 Javascript
Bootstrap输入框组件使用详解
2017/06/09 Javascript
vue-cli中的webpack配置详解
2017/09/25 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
微信小程序系列之自定义顶部导航功能
2019/05/21 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
Python对象属性自动更新操作示例
2018/06/15 Python
python 美化输出信息的实例
2018/10/15 Python
python flask框架实现重定向功能示例
2019/07/02 Python
使用python实现kNN分类算法
2019/10/16 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
PyQt5 QDockWidget控件应用详解
2020/08/12 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
iKRIX意大利网上商店:男女豪华服装和配件
2019/10/09 全球购物
公司任命书模板
2014/06/06 职场文书
学校端午节活动方案
2014/08/23 职场文书
公司管理制度范本
2015/08/03 职场文书
人身损害赔偿协议书
2016/03/22 职场文书
“爱眼护眼,提前预防近视”倡议书3篇
2019/10/30 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
Nginx实现会话保持的两种方式
2022/03/18 Servers