纯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 相关文章推荐
JS Timing
Apr 21 Javascript
用jQuery实现检测浏览器及版本的脚本代码
Jan 22 Javascript
JS弹出对话框返回值代码(asp.net后台)
Dec 28 Javascript
在JavaScript中实现类的方式探讨
Aug 28 Javascript
Angularjs注入拦截器实现Loading效果
Dec 28 Javascript
Javascript 基础---Ajax入门必看
Jul 06 Javascript
基于Vue 服务端Cookies删除的问题
Sep 21 Javascript
angular中子控制器向父控制器传值的实例
Oct 08 Javascript
详解基于webpack&amp;gettext的前端多语言方案
Jan 29 Javascript
手写Vue弹窗Modal的实现代码
Sep 11 Javascript
java和js实现的洗牌小程序
Sep 30 Javascript
Map与WeakMap类型在JavaScript中的使用详解
Nov 18 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程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
php下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
fgetcvs在linux的问题
2012/01/15 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
Laravel 队列使用的实现
2019/01/08 PHP
javascript对JSON数据排序的3个例子
2014/04/12 Javascript
解析JavaScript的ES6版本中的解构赋值
2015/07/28 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
Bootstrap-table自定义可编辑每页显示记录数
2018/09/07 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
js实现网页随机验证码
2020/10/19 Javascript
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
Python反射的用法实例分析
2018/02/11 Python
windows10下python3.5 pip3安装图文教程
2018/04/02 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
Python select及selectors模块概念用法详解
2020/06/22 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
2018/01/10 HTML / CSS
海淘母婴商城:国际妈咪
2016/07/23 全球购物
Python采集股票数据并制作可视化柱状图
2022/04/04 Python
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript