纯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 相关文章推荐
Locate a File Using a File Open Dialog Box
Jun 18 Javascript
比较详细的关于javascript 解析json的代码
Dec 16 Javascript
jQuery之日期选择器的深入解析
Jun 19 Javascript
JavaScript实现的图像模糊算法代码分享
Apr 22 Javascript
javascript修改图片src的方法
Jan 27 Javascript
JavaScript引用类型和基本类型详解
Jan 06 Javascript
Angularjs 实现一个幻灯片示例代码
Sep 08 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
Nov 07 Javascript
浅谈webpack组织模块的原理
Mar 10 Javascript
Vue中的methods、watch、computed的区别
Nov 26 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
May 05 Javascript
vue router-link 默认a标签去除下划线的实现
Nov 06 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
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
php不使用插件导出excel的简单方法
2014/03/04 PHP
php的4种常用运行方式详解
2016/12/22 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
javascript new 需不需要继续使用
2009/07/02 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
ExtJs动态生成treepanel的Json格式
2015/07/19 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
2015/12/14 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
Angularjs---项目搭建图文教程
2016/07/08 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
python取代netcat过程分析
2018/02/10 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
2014年国庆标语
2014/06/30 职场文书
建设办主任四风问题整改思路和措施
2014/09/20 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
swagger如何返回map字段注释
2021/07/03 Java/Android
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL