zoukankan      html  css  js  c++  java
  • 用ztree实现风琴式菜单树

    最近项目中用到了ztree这款树形插件,完备的api,强大的功能真是令人叹服,在此,lizi分享基于ztree的风琴式菜单的制作。

    预览图:

    演示地址: http://runjs.cn/detail/a2vxktqu

    一、准备工作

      1、引入核心js,metro样式

     <link rel="stylesheet" href="css/reset.css"/>
        <link rel="stylesheet" href="css/metroStyle/metroStyle.css"/>
        <link rel="stylesheet" href="css/style.css"/>
        <style>
             .ztree * {font-size: 10pt;font-family:"Microsoft Yahei",
    Verdana,Simsun,"Segoe UI Web Light","Segoe UI Light","Segoe UI Web Regular","Segoe UI","Segoe UI Symbol","Helvetica Neue",Arial}
             .ztree li ul{ margin:0; padding:0}
             .ztree li {line-height:35px;}
             .ztree li a {width:97%;height:35px;padding-top: 0px;}
             .ztree li a:hover {color:white;text-decoration:none; background-color: #258ecd;}
             .ztree li a span.button.switch {visibility:hidden}
             .ztree.showIcon li a span.button.switch {visibility:visible}
             .ztree li a.curSelectedNode {background-color:#47a3da;color:#fff;border:0;height:35px;}
             .ztree li span {line-height:35px;}
             .ztree li span.button {margin-top: -7px;}
             .ztree li span.button.switch {width: 14px;height: 14px;}
             .ztree li a span.node_name{font-size: 12px}
             .ztree li a.level0 span {font-size: 14px;font-weight: 600;}
             .ztree li span.button{background-image:url("images/left_menuForOutLook.png");*background-image:url("images/left_menuForOutLook.gif"); }
             .ztree li span.button.switch.level0 {width: 20px; height:20px}
             .ztree li span.button.switch.level1 {width: 20px; height:20px}
             .ztree li span.button.noline_open {background-position: 0 0;}
             .ztree li span.button.noline_close {background-position: -18px 0;}
             .ztree li span.button.noline_open.level0 {background-position: 0 -18px;}
             .ztree li span.button.noline_close.level0 {background-position: -18px -18px;}
        </style>
    View Code

     html

    <div class="container">
          <div class="siderbar">
              <div class="ztree showIcon" id="treeDemo">
    
              </div>
          </div>
          <section class="main-content">
                <p style="margin: 50px auto;text-align: center;font-size: 24px">
                  Here to create anything  you  want ~
                </p>
    
    
              <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    <
    br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    <
    br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    <
    br/><br/><br/><br/><br/><br/><br/><br/> </section> </div> <script src="plugins/jQuery/jquery-2.2.3.min.js"></script> <script src="plugins/ztree/jquery.ztree.core.js"></script> <script src="js/menuTree.js"></script>

      2、设置ztree配置参数,获取数据源,初始化treeDemo

           //这是数据源,其实不用这么冗余的,lizi直接从官网上找了一颗ztree,获取完整的节点数据信息(没必要这样做,simpledata就可以)

     var zNodes=[
          {
              "id": 1,
              "pId": null,
              "name": "父节点 1",
              "open": true,
              "children": [
                  {
                      "id": 11,
                      "pId": 1,
                      "name": "叶子节点 1-1",
                      "level": 1,
                      "tId": "treeDemo_2",
                      "parentTId": "treeDemo_1",
                      "open": true,
                      "isParent": true,
                      "zAsync": true,
                      "isFirstNode": true,
                      "isLastNode": false,
                      "isAjaxing": false,
                      "checked": false,
                      "checkedOld": false,
                      "nocheck": false,
                      "chkDisabled": false,
                      "halfCheck": false,
                      "check_Child_State": 0,
                      "check_Focus": false,
                      "isHover": false,
                      "editNameFlag": false,
                      "children": [
                          {
                              "id": 105,
                              "pId": 11,
                              "name": "new node5",
                              "level": 2,
                              "tId": "treeDemo_17",
                              "parentTId": "treeDemo_2",
                              "open": false,
                              "isParent": false,
                              "zAsync": true,
                              "isFirstNode": true,
                              "isLastNode": false,
                              "isAjaxing": false,
                              "checked": false,
                              "checkedOld": false,
                              "nocheck": false,
                              "chkDisabled": false,
                              "halfCheck": false,
                              "check_Child_State": -1,
                              "check_Focus": false,
                              "isHover": false,
                              "editNameFlag": false
                          },
                          {
                              "id": 106,
                              "pId": 11,
                              "name": "new node6",
                              "level": 2,
                              "tId": "treeDemo_18",
                              "parentTId": "treeDemo_2",
                              "open": true,
                              "isParent": true,
                              "zAsync": true,
                              "isFirstNode": false,
                              "isLastNode": true,
                              "isAjaxing": false,
                              "checked": false,
                              "checkedOld": false,
                              "nocheck": false,
                              "chkDisabled": false,
                              "halfCheck": false,
                              "check_Child_State": 0,
                              "check_Focus": false,
                              "isHover": false,
                              "editNameFlag": false,
                              "children": [
                                  {
                                      "id": 107,
                                      "pId": 106,
                                      "name": "new node7",
                                      "level": 3,
                                      "tId": "treeDemo_19",
                                      "parentTId": "treeDemo_18",
                                      "open": false,
                                      "isParent": false,
                                      "zAsync": true,
                                      "isFirstNode": true,
                                      "isLastNode": true,
                                      "isAjaxing": false,
                                      "checked": false,
                                      "checkedOld": false,
                                      "nocheck": false,
                                      "chkDisabled": false,
                                      "halfCheck": false,
                                      "check_Child_State": -1,
                                      "check_Focus": false,
                                      "isHover": false,
                                      "editNameFlag": false
                                  }
                              ]
                          }
                      ]
                  },
                  {
                      "id": 12,
                      "pId": 1,
                      "name": "叶子节点 1-2",
                      "level": 1,
                      "tId": "treeDemo_3",
                      "parentTId": "treeDemo_1",
                      "open": true,
                      "isParent": true,
                      "zAsync": true,
                      "isFirstNode": false,
                      "isLastNode": false,
                      "isAjaxing": false,
                      "checked": false,
                      "checkedOld": false,
                      "nocheck": false,
                      "chkDisabled": false,
                      "halfCheck": false,
                      "check_Child_State": 0,
                      "check_Focus": false,
                      "isHover": false,
                      "editNameFlag": false,
                      "children": [
                          {
                              "id": 104,
                              "pId": 12,
                              "name": "new node4",
                              "level": 2,
                              "tId": "treeDemo_16",
                              "parentTId": "treeDemo_3",
                              "open": false,
                              "isParent": false,
                              "zAsync": true,
                              "isFirstNode": true,
                              "isLastNode": true,
                              "isAjaxing": false,
                              "checked": false,
                              "checkedOld": false,
                              "nocheck": false,
                              "chkDisabled": false,
                              "halfCheck": false,
                              "check_Child_State": -1,
                              "check_Focus": false,
                              "isHover": false,
                              "editNameFlag": false
                          }
                      ]
                  },
                  {
                      "id": 13,
                      "pId": 1,
                      "name": "叶子节点 1-3",
                      "level": 1,
                      "tId": "treeDemo_4",
                      "parentTId": "treeDemo_1",
                      "open": false,
                      "isParent": false,
                      "zAsync": true,
                      "isFirstNode": false,
                      "isLastNode": true,
                      "isAjaxing": false,
                      "checked": false,
                      "checkedOld": false,
                      "nocheck": false,
                      "chkDisabled": false,
                      "halfCheck": false,
                      "check_Child_State": -1,
                      "check_Focus": false,
                      "isHover": false,
                      "editNameFlag": false
                  }
              ],
              "level": 0,
              "tId": "treeDemo_1",
              "parentTId": null,
              "isParent": true,
              "zAsync": true,
              "isFirstNode": true,
              "isLastNode": false,
              "isAjaxing": false,
              "checked": false,
              "checkedOld": false,
              "nocheck": false,
              "chkDisabled": false,
              "halfCheck": false,
              "check_Child_State": 0,
              "check_Focus": false,
              "isHover": false,
              "editNameFlag": false
          },
          {
              "id": 2,
              "pId": null,
              "name": "父节点 2",
              "open": true,
              "children": [
                  {
                      "id": 21,
                      "pId": 2,
                      "name": "叶子节点 2-1",
                      "level": 1,
                      "tId": "treeDemo_6",
                      "parentTId": "treeDemo_5",
                      "open": true,
                      "isParent": true,
                      "zAsync": true,
                      "isFirstNode": true,
                      "isLastNode": false,
                      "isAjaxing": false,
                      "checked": false,
                      "checkedOld": false,
                      "nocheck": false,
                      "chkDisabled": false,
                      "halfCheck": false,
                      "check_Child_State": 0,
                      "check_Focus": false,
                      "isHover": false,
                      "editNameFlag": false,
                      "children": [
                          {
                              "id": 101,
                              "pId": 21,
                              "name": "new node1",
                              "level": 2,
                              "tId": "treeDemo_13",
                              "parentTId": "treeDemo_6",
                              "open": false,
                              "isParent": false,
                              "zAsync": true,
                              "isFirstNode": true,
                              "isLastNode": false,
                              "isAjaxing": false,
                              "checked": false,
                              "checkedOld": false,
                              "nocheck": false,
                              "chkDisabled": false,
                              "halfCheck": false,
                              "check_Child_State": -1,
                              "check_Focus": false,
                              "isHover": false,
                              "editNameFlag": false
                          },
                          {
                              "id": 102,
                              "pId": 21,
                              "name": "new node2",
                              "level": 2,
                              "tId": "treeDemo_14",
                              "parentTId": "treeDemo_6",
                              "open": false,
                              "isParent": false,
                              "zAsync": true,
                              "isFirstNode": false,
                              "isLastNode": true,
                              "isAjaxing": false,
                              "checked": false,
                              "checkedOld": false,
                              "nocheck": false,
                              "chkDisabled": false,
                              "halfCheck": false,
                              "check_Child_State": -1,
                              "check_Focus": false,
                              "isHover": false,
                              "editNameFlag": false
                          }
                      ]
                  },
                  {
                      "id": 22,
                      "pId": 2,
                      "name": "叶子节点 2-2",
                      "level": 1,
                      "tId": "treeDemo_7",
                      "parentTId": "treeDemo_5",
                      "open": true,
                      "isParent": true,
                      "zAsync": true,
                      "isFirstNode": false,
                      "isLastNode": false,
                      "isAjaxing": false,
                      "checked": false,
                      "checkedOld": false,
                      "nocheck": false,
                      "chkDisabled": false,
                      "halfCheck": false,
                      "check_Child_State": 0,
                      "check_Focus": false,
                      "isHover": false,
                      "editNameFlag": false,
                      "children": [
                          {
                              "id": 103,
                              "pId": 22,
                              "name": "new node3",
                              "level": 2,
                              "tId": "treeDemo_15",
                              "parentTId": "treeDemo_7",
                              "open": false,
                              "isParent": false,
                              "zAsync": true,
                              "isFirstNode": true,
                              "isLastNode": true,
                              "isAjaxing": false,
                              "checked": false,
                              "checkedOld": false,
                              "nocheck": false,
                              "chkDisabled": false,
                              "halfCheck": false,
                              "check_Child_State": -1,
                              "check_Focus": false,
                              "isHover": false,
                              "editNameFlag": false
                          }
                      ]
                  },
                  {
                      "id": 23,
                      "pId": 2,
                      "name": "叶子节点 2-3",
                      "level": 1,
                      "tId": "treeDemo_8",
                      "parentTId": "treeDemo_5",
                      "open": false,
                      "isParent": false,
                      "zAsync": true,
                      "isFirstNode": false,
                      "isLastNode": true,
                      "isAjaxing": false,
                      "checked": false,
                      "checkedOld": false,
                      "nocheck": false,
                      "chkDisabled": false,
                      "halfCheck": false,
                      "check_Child_State": -1,
                      "check_Focus": false,
                      "isHover": false,
                      "editNameFlag": false
                  }
              ],
              "level": 0,
              "tId": "treeDemo_5",
              "parentTId": null,
              "isParent": true,
              "zAsync": true,
              "isFirstNode": false,
              "isLastNode": false,
              "isAjaxing": false,
              "checked": false,
              "checkedOld": false,
              "nocheck": false,
              "chkDisabled": false,
              "halfCheck": false,
              "check_Child_State": 0,
              "check_Focus": false,
              "isHover": false,
              "editNameFlag": false
          },
          {
              "id": 3,
              "pId": null,
              "name": "父节点 3",
              "open": true,
              "children": [
                  {
                      "id": 31,
                      "pId": 3,
                      "name": "叶子节点 3-1",
                      "level": 1,
                      "tId": "treeDemo_10",
                      "parentTId": "treeDemo_9",
                      "open": false,
                      "isParent": false,
                      "zAsync": true,
                      "isFirstNode": true,
                      "isLastNode": false,
                      "isAjaxing": false,
                      "checked": false,
                      "checkedOld": false,
                      "nocheck": false,
                      "chkDisabled": false,
                      "halfCheck": false,
                      "check_Child_State": -1,
                      "check_Focus": false,
                      "isHover": false,
                      "editNameFlag": false
                  },
                  {
                      "id": 32,
                      "pId": 3,
                      "name": "叶子节点 3-2",
                      "level": 1,
                      "tId": "treeDemo_11",
                      "parentTId": "treeDemo_9",
                      "open": true,
                      "isParent": true,
                      "zAsync": true,
                      "isFirstNode": false,
                      "isLastNode": false,
                      "isAjaxing": false,
                      "checked": false,
                      "checkedOld": false,
                      "nocheck": false,
                      "chkDisabled": false,
                      "halfCheck": false,
                      "check_Child_State": 0,
                      "check_Focus": false,
                      "isHover": true,
                      "editNameFlag": false,
                      "children": [
                          {
                              "id": 108,
                              "pId": 32,
                              "name": "new node8",
                              "level": 2,
                              "tId": "treeDemo_20",
                              "parentTId": "treeDemo_11",
                              "open": false,
                              "isParent": false,
                              "zAsync": true,
                              "isFirstNode": true,
                              "isLastNode": true,
                              "isAjaxing": false,
                              "checked": false,
                              "checkedOld": false,
                              "nocheck": false,
                              "chkDisabled": false,
                              "halfCheck": false,
                              "check_Child_State": -1,
                              "check_Focus": false,
                              "isHover": false,
                              "editNameFlag": false
                          }
                      ]
                  },
                  {
                      "id": 33,
                      "pId": 3,
                      "name": "叶子节点 3-3",
                      "level": 1,
                      "tId": "treeDemo_12",
                      "parentTId": "treeDemo_9",
                      "open": true,
                      "isParent": true,
                      "zAsync": true,
                      "isFirstNode": false,
                      "isLastNode": true,
                      "isAjaxing": false,
                      "checked": false,
                      "checkedOld": false,
                      "nocheck": false,
                      "chkDisabled": false,
                      "halfCheck": false,
                      "check_Child_State": 0,
                      "check_Focus": false,
                      "isHover": false,
                      "editNameFlag": false,
                      "children": [
                          {
                              "id": 109,
                              "pId": 33,
                              "name": "new node9",
                              "level": 2,
                              "tId": "treeDemo_21",
                              "parentTId": "treeDemo_12",
                              "open": false,
                              "isParent": false,
                              "zAsync": true,
                              "isFirstNode": true,
                              "isLastNode": true,
                              "isAjaxing": false,
                              "checked": false,
                              "checkedOld": false,
                              "nocheck": false,
                              "chkDisabled": false,
                              "halfCheck": false,
                              "check_Child_State": -1,
                              "check_Focus": false,
                              "isHover": false,
                              "editNameFlag": false
                          }
                      ]
                  }
              ],
              "level": 0,
              "tId": "treeDemo_9",
              "parentTId": null,
              "isParent": true,
              "zAsync": true,
              "isFirstNode": false,
              "isLastNode": true,
              "isAjaxing": false,
              "checked": false,
              "checkedOld": false,
              "nocheck": false,
              "chkDisabled": false,
              "halfCheck": false,
              "check_Child_State": 0,
              "check_Focus": false,
              "isHover": false,
              "editNameFlag": false
          }
      ]
    View Code

    var
    setting={ view: { showLine: false,
    //自定义样式 addDiyDom: addDiyDom }, callback: {
    //callback func //beforeClick: beforeClick, //在这里没有用上 onClick: onClick, onExpand: zTreeOnExpand } };
    function initMenu(){ var treeObj = $("#treeDemo"); for(var z=0;z<zNodes.length;z++){ zNodes[z].open =false; if(zNodes[z].children&&zNodes[z].children.length>0){ for(var w = 0; w <zNodes[z].children.length;w++){ zNodes[z].children[w].open = false; } zNodes[z].children[0].open = true; } } zNodes[0].open =true;
    //初始化ztree方法 $.fn.zTree.init(treeObj, setting, zNodes); } initMenu();

    3、自定义节点样式

    function addDiyDom(treeId, treeNode) {
        var spaceWidth = 8;
        var switchObj = $("#" + treeNode.tId + "_switch"),
            icoObj = $("#" + treeNode.tId + "_ico");
        switchObj.remove();
        icoObj.before(switchObj);
    
        if (treeNode.level >= 1) {
            var spaceStr = "<span style='display: inline-block;" + (spaceWidth * treeNode.level)+ "px'></span>";
            switchObj.before(spaceStr);
        }
    }
    View Code

    4、节点点击事件,展开事件

       

    function zTreeOnExpand(event,treeId, treeNode){
        var treeObj = $.fn.zTree.getZTreeObj(treeId);
        var treeNodes = treeObj.getNodesByParam("level", 0, null);
        var treeNodes1 = treeObj.getNodesByParam("level", 1, null);
        if(treeNode.level==0){
            //点击的当前结点为一级节点
            for(var i=0;i<treeNodes.length;i++){
                //展开当前一级节点
                if(treeNode.id ==treeNodes[i].id){
                    for(var j = 0;j<treeNodes1.length;j++){
                        if(treeNodes1[j].pId == treeNode.id){
                            treeObj.expandNode(treeNodes1[j], false, false, true);
                        }
                    }
                    treeObj.expandNode(treeNode, true, false, true);
                }else{
                    //收起其他的一级节点
                    for(var j = 0;j<treeNodes1.length;j++){
                        if(treeNodes1[j].pId != treeNode.id){
                            treeObj.expandNode(treeNodes1[j], false, false, true);
                        }
                    }
                    treeObj.expandNode(treeNodes[i], false, false, true);
    
                }
            }
    
    
        };
        //如果点击的当前节点为二级节点
        if(treeNode.level==1){
            //收起该节点的同级节点,仅展开自己
            for(var j = 0;j<treeNodes1.length;j++){
                if(treeNodes1[j].pId == treeNode.pId&&treeNodes1[j].id!=treeNode.id){
                    treeObj.expandNode(treeNodes1[j], false, false, true);
                }
            }
            treeObj.expandNode(treeNode, true, false, true);
            //$("body").scrollTop(0);
        }
    }
    function onClick(event,treeId,treeNode){
        if(treeNode.level==0){
            var treeObj = $.fn.zTree.getZTreeObj(treeId);
            var treeNodes = treeObj.getNodesByParam("level", 0, null);
            var treeNodes1 = treeObj.getNodesByParam("level", 1, null);
            for(var i=0;i<treeNodes.length;i++){
    
                if(treeNode.id ==treeNodes[i].id){
    
                    for(var j = 0;j<treeNodes1.length;j++){
                        if(treeNodes1[j].pId == treeNode.id){
                            treeObj.expandNode(treeNodes1[j], false, false, true);
                        }
                    }
    
                    treeObj.expandNode(treeNode, true, false, true);
    
                }else{
                    //收起其他一级菜单下的所有二级菜单
                    for(var j = 0;j<treeNodes1.length;j++){
                        if(treeNodes1[j].pId != treeNode.id){
                            treeObj.expandNode(treeNodes1[j], false, false, true);
                        }
                    }
                    //收起其他的一级菜单
                    treeObj.expandNode(treeNodes[i], false, false, true);
    
                }
            }
    
        };
    }
    View Code

    二、查看演示

     http://runjs.cn/detail/a2vxktqu

  • 相关阅读:
    全局获取Context
    下拉刷新 SwipeRefreshLayout
    更高级的ToolBar使用----AppBarLayout
    卡片布局CardView
    Design Support的CoordinatorLayout布局
    悬浮按钮FloatingActionButton
    继续滑动菜单的完善,NavigationView,图片圆形化-CircleImageView
    修改电脑hosts文件
    Activity生命周期和启动模式
    活动的基本用法
  • 原文地址:https://www.cnblogs.com/lizimeme/p/7195811.html
Copyright © 2011-2022 走看看