js案例--手风琴

手风琴

1.样式:

<style>
      ul {
        margin: 0;
        list-style: none;
        padding: 0;
      }

      .wrap {
        width: 200px;
        border: 1px solid #ccc;
        text-align: center;
        line-height: 2;
      }

      .title {
        background: rgb(236, 135, 52);
        display: block;
        cursor: pointer;
      }
    </style>

2.结构

 <div class="wrap" id="wrap">
      <ul class="menu"></ul>
    </div>

3.事件

<script>
      var menu = [
        { name: "菜单1", childern: ["商品1", "商品2", "商品3", "商品4"] },
        { name: "菜单2", childern: ["商品1", "商品2", "商品3", "商品4"] },
        { name: "菜单3", childern: ["商品1", "商品2", "商品3", "商品4"] },
        { name: "菜单4", childern: ["商品1", "商品2", "商品3", "商品4"] },
      ];
      //   根据menu数组的长度在ul.menu中添加一定数量的li
      var menu1 = document.getElementsByClassName("menu")[0];
      for (var i = 0; i < menu.length; i++) {
        //   创建一个li
        var li = document.createElement("LI");
        li.innerHTML = `<span class='title'>${menu[i].name}</span>`;
        menu1.appendChild(li);
        // 创建ul且在ul中创建一定数量的li   取决于menu[i].children.length
        var ulChild = document.createElement("UL");
        // 循环遍历children, 创建li
        for (var j = 0; j < menu[i].childern.length; j++) {
          var liChild = document.createElement("LI");
          // 相信添加li中添加内容
          liChild.innerHTML = menu[i].childern[j];
          // 将每个li追加到li中
          ulChild.appendChild(liChild);
        }
        // 将子菜单ul追加到li中
        li.appendChild(ulChild);
      }
      //   给每一个span  菜单按钮绑定点击时间   事件委托
      menu1.onclick = function (e) {
        if (e.target.nodeName == "SPAN") {
          //   如果点击菜单按钮,就做显示隐藏操作
          var style = getComputedStyle(e.target.nextElementSibling);
          if (style.display == "block") {
            e.target.nextElementSibling.style.display = "none";
          } else {
            e.target.nextElementSibling.style.display = "block";
          }
        }
      };
    </script>
上一篇:Python 玩转列表(educoder)


下一篇:如何用CSS修改图片颜色