js實現的響應式導航選單效果

admin發表於2017-02-23
下面分享一下如何利用AimaraJS製作響應式導航選單效果。

aimaraJS是一款非常實用的純javascript響應式多級目錄樹結構外掛。該目錄樹可以動態新增和刪除樹節點,可以製作多級樹結構,每個節點上可以都帶有右鍵上下文選單,並且每個節點上都可以配置不同的圖示。它的特點有:

(1).可以建立一個基本的樹結構並渲染它。

(2).可以實時新增和刪除樹節點。

(3).可以顯示不同的樹節點圖示。

(4).在樹節點開啟和關閉的時候可以自定義事件。

(5).每個樹節點上都可以製作右鍵上下文選單。

圖示如下:

a:3:{s:3:\"pic\";s:43:\"portal/201702/23/161338idnjo8c4hb4ldbm7.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

使用方法:

使用該幻燈片外掛需要在頁面中引入Aimara.css和Aimara.js檔案。

[HTML] 純文字檢視 複製程式碼
<link rel="stylesheet" href="css/Aimara.css" />
<script src="js/Aimara.js"></script>

HTML結構:

可以使用一個空的<div>來作為這個目錄樹的容器。

[HTML] 純文字檢視 複製程式碼
<div id="div_tree"></div>

javascript:

然後你可以通過下面的方法來初始化該目錄樹外掛。

可以建立一些樹節點和子節點,然後渲染它們。節點可以在樹被渲染之前或之後新增到樹結構中。

[HTML] 純文字檢視 複製程式碼
<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>

為樹節點建立上下文選單:

可以通過下面的方法來建立一個右鍵上下文選單。

[JavaScript] 純文字檢視 複製程式碼
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();
       }
      }
     ]
    }
   }
  ]
 }
};

然後通過下面的方法來初始化樹結構:

[JavaScript] 純文字檢視 複製程式碼
tree = createTree('div_tree','white',contex_menu);
tree.drawTree();

在樹結構渲染之後實時新增一個樹節點:

[JavaScript] 純文字檢視 複製程式碼
tree.createNode('Real Time',false,'images/leaf.png',null,null,'context1');

相關文章