树形菜单制作

简介: 树形菜单制作

运用 递归函数方法制作

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
  </head>
  <style>
    * {
      padding: 0;
      margin: 0;
    }
    .side-menu {
      width: 300px;
      border: 1px solid #ddd;
    }
    .side-menu ul li {
      list-style: none;
    }
    .side-menu ul li a {
      display: block;
      text-decoration: none;
      color: #222;
      border-bottom: 1px solid #ddd;
    }
    .subnav {
      display: none;
    }
  </style>
  <body>
    <div class="side-menu"></div>
  </body>
  <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
  <script>
    $(function() {
      $.ajax({
        type: "GET",
        url: "./1.JSON",
        dataType: "json",
        success: function(res) {
          let dataArr = res;
          let liStr = "";
          let oUl = $("<ul></ul>");
          let num = 5;
          if (dataArr.length > 0) {
            num += 5;
            for (var i = 0; i < dataArr.length; i++) {
              if (dataArr[i].childMenu != null && dataArr[i].childMenu.length > 0) { //有子菜单
                liStr += "<li><a href=\"" + dataArr[i].href + "\"><i class=\"" + dataArr[
                    i].Left + "\"></i>" + dataArr[i].name + "<i class=\"" + dataArr[i]
                  .Right + "\"></i></a><ul class=\"subnav\">";
                for (var j = 0; j < dataArr[i].childMenu.length; j++) {
                  liStr += getChildMenu(dataArr[i].childMenu[j], num);
                }
                liStr += "</ul></li>";
              } else { //没有子菜单
                liStr += "<li><a href=\"" + dataArr[i].href + "\"><i class=\"" + dataArr[
                    i].Left + "\"></i>" + dataArr[i].name + "<i class=\"" + dataArr[i]
                  .Right + "\"></i></a></li>";
              }
            }
            oUl.html(liStr);
            $(".side-menu").append(oUl);
          }
        }
      })
      function getChildMenu(dataArr, num) { //递归创建子菜单
        let subStr = "";
        num += 10;
        if (dataArr.childMenu != null && dataArr.childMenu.length > 0) { //有子菜单
          subStr += "<li><a style=\"padding-left:" + num + "px;\" href=\"" + dataArr.href +
            "\"><i class=\"" + dataArr.Left + "\"></i>" + dataArr.name + "<i class=\"" + dataArr.Right +
            "\"></i></a><ul class=\"subnav\">";
          for (var j = 0; j < dataArr.childMenu.length; j++) {
            subStr += getChildMenu(dataArr.childMenu[j], num);
          }
          subStr += "</ul></li>";
        } else { //无子菜单
          subStr += "<li><a  style=\"padding-left:" + num + "px;\" href=\"" + dataArr.href +
            "\"><i class=\"" + DataTransfer.Left + "\"></i>" + dataArr.name + "<i class=\"" + dataArr
            .Right + "\"></i></a></li>";
        }
        return subStr;
      }
      (function SideMenuHandle() {
        $('.side-menu').on("click", "li", function(event) {
          event.stopPropagation();
          // console.log($(this).find(".subnav").length)
          if ($(this).find(".subnav").eq(0).is(":hidden")) {
            $(this).find(".subnav").eq(0).show();
          } else {
            $(this).find(".subnav").eq(0).hide();
          }
        })
      })();
    })
  </script>
</html>

制作做效果如下只是简易效果

f4061b6cf8e04542b184c0062fec131b.png


相关文章
|
5月前
2024简约唯美的个人引导页源码
2024简约唯美的个人引导页源码,源码由HTML+CSS+JS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面
149 4
|
7月前
结合vant组件快速制作一个二次元轮播图
结合vant组件快速制作一个二次元轮播图
74 0
HTML+CSS+JS实现十款好看的登录注册界面模板,赶紧收藏起来吧!(二)
HTML+CSS+JS实现十款好看的登录注册界面模板,赶紧收藏起来吧!
|
7月前
|
移动开发 小程序
uniapp轮播图制作
uniapp轮播图制作
204 0
|
存储 前端开发 JavaScript
HTML+CSS+JS轮播图制作(前端)
HTML+CSS+JS轮播图制作(前端)
201 0
|
定位技术 Windows
PPT制作鼠标悬停动画效果!
上面视频中,我是以四川省的地图为例,当鼠标悬停在某个区域,会自动用颜色突出该区域,并在旁边用气泡显示名称。
344 0
|
小程序 开发者
如何制作一个闪屏页面
闪屏(Splash)指的是当你打开一个应用时,首先映入眼帘的那个界面。通常闪屏页面都会比较简单,因为要一闪而过(这大概就是为什么叫做闪屏了),一般都会放置产品的 LOGO,在游戏中通常会放置游戏制作团队或者工作室的 LOGO。
218 0
|
JavaScript 前端开发
原生js制作选项卡详解,适合无基础的人学习
原生js制作选项卡详解,适合无基础的人学习
148 0
|
存储 前端开发 JavaScript
|
前端开发
一篇文章教会你如何制作精美导航条
一篇文章教会你如何制作精美导航条
576 0
一篇文章教会你如何制作精美导航条