纯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 伪数组实现方法
Oct 11 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
Dec 14 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
Sep 09 Javascript
jquery获取文档高度和窗口高度汇总
Jan 25 Javascript
javascript js 操作数组 增删改查的简单实现
Jun 20 Javascript
AngularJS ng-bind 指令简单实现
Jul 30 Javascript
Bootstrap源码解读排版(1)
Dec 23 Javascript
html5 canvas 详细使用教程
Jan 20 Javascript
Javascript仿京东放大镜的效果
Mar 01 Javascript
javascript 的变量、作用域和内存问题
Apr 19 Javascript
React优化子组件render的使用
May 12 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
Feb 28 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
B2K与车机的中波PK
2021/03/02 无线电
PHP用GD库生成高质量的缩略图片
2011/03/09 PHP
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
2014/03/08 PHP
php 使用GD库为页面增加水印示例代码
2014/03/24 PHP
手机号码,密码正则验证
2014/09/04 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
深入探讨前端框架react
2015/12/09 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
详解webpack介绍&amp;安装&amp;常用命令
2017/06/29 Javascript
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
浅谈使用React.setState需要注意的三点
2017/12/18 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python函数式编程指南(四):生成器详解
2015/06/24 Python
Python3多线程操作简单示例
2018/05/22 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
tensorflow 只恢复部分模型参数的实例
2020/01/06 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
HTML5 canvas基本绘图之绘制阴影效果
2016/06/27 HTML / CSS
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
成功的餐厅经营创业计划书
2014/01/15 职场文书
化妆师职业生涯规划书
2014/02/16 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
离职证明标准格式
2014/09/15 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
写给老师的保证书
2015/05/09 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
如何用threejs实现实时多边形折射
2021/05/07 Javascript