树形菜单Demo[超详细注释]

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>树形菜单Demo</title>
    <style type="text/css">
      body {
        font-size: 13px;
        line-height: 20px;
      }

      #outerul {
        text-align: left;
        margin: 30px;
        padding: 0px;

        cursor: pointer;
      }

      #outerul ul a {
        text-decoration: none;
        color: black;
      }

      #outerul li {
        margin: -4px 0 0 -30px;
        padding: 0px;

        list-style-type: none;
      }

      #outerul .symbolsPlus {
        float: left;
        width: 32px;
        height: 15px;
        background-position: 0 50%;
        background-repeat: no-repeat;
      }

      #outerul .symbolsSub {
        float: left;
        width: 18px;
        height: 15px;
        background-position: 0 50%;
        background-repeat: no-repeat;
      }
    </style>
  </head>
  <body>
    <ul id="outerul">
      <li>
        名站导航
        <ul>
          <li>
            <a href="#">百度贴吧</a>
            <ul>
              <li>旅游吧</li>
              <li>古典音乐吧</li>
              <li>摄影吧</li>
              <li>出国留学吧</li>
            </ul>
          </li>
          <li><a href="#">新浪微博</a></li>
          <li><a href="#">腾讯空间</a></li>
          <li><a href="#">网易邮箱</a></li>
          <li><a href="#">淘宝商城</a></li>
        </ul>
      </li>
      <li>
        常用软件
        <ul>
          <li><a href="#">杀毒软件</a></li>
          <li><a href="#">聊天工具</a></li>
          <li><a href="#">网页浏览</a></li>
        </ul>
      </li>
      <li>
        热门游戏
        <ul>
          <li><a href="#">生化危机</a></li>
          <li><a href="#">红色警戒</a></li>
          <li><a href="#">帝国时代</a></li>
          <li><a href="#">反恐精英</a></li>
        </ul>
      </li>
      <li>
        桌面背景
        <ul>
          <li><a href="#">深谷幽涧</a></li>
          <li><a href="#">群山峻岭</a></li>
          <li><a href="#">茵茵草原</a></li>
          <li><a href="#">热带风暴</a></li>
        </ul>
      </li>
    </ul>
  </body>
  <script>
    var menu, subMenus, menuIcon;

    function init() {
      // 获取所有li集合
      menuArray = document.getElementById("outerul").getElementsByTagName("li");

      for (var i = 0; i < menuArray.length; i++) {
        // 获取所有li里的所有ul
        subMenus = menuArray[i].getElementsByTagName("ul");
        // 判断所有li里的所有ul长度不为空的执行以下
        if (subMenus.length > 0) {
          // 创建一个span标签,设置类名,设置未被点击的背景图片
          menuIcon = document.createElement("span");
          menuIcon.className = "symbolsPlus";
          menuIcon.style.backgroundImage = "url(images/z-plus.jpg)";
          //   菜单图标的点击事件
          menuIcon.onclick = function () {
            // 菜单图标点击后,调用封装好的控制显隐的函数,把菜单的直接父节点传给这个函数
            showHide(this.parentNode); //this指向事件的绑定者
          };
          //把菜单插入到(li里ul长度不为空的)li的第一个孩子节点
          menuArray[i].insertBefore(menuIcon, menuArray[i].firstChild);
          //   隐藏所有一级菜单里的第一个ul
          subMenus[0].style.display = "none";
        } else {
          // 所有li里的ul长度为空的执行以下

          //创建菜单图标,类名,点击后的背景图
          menuIcon = document.createElement("span");
          menuIcon.className = "symbolsSub";
          menuIcon.style.backgroundImage = "url(images/z-top.gif)";
          //把菜单插入到(li里ul长度为空的)li的第一个孩子节点
          menuArray[i].insertBefore(menuIcon, menuArray[i].firstChild);
        }
      }

      //遍历树,将末尾的图片设置为z-end.gif
      // 获取所有ul集合
      var ulArray = document.getElementsByTagName("ul");
      for (var i = 0; i < ulArray.length; i++) {
        // 获取(所有ul中的)li集合
        var liArray = ulArray[i].getElementsByTagName("li");
        // 获取(所有ul中的)li集合里的最后一个li
        var lastli = liArray[liArray.length - 1];
        // 把(所有ul中的)li集合里的最后一个li的第一个孩子节点赋值给span
        var span = lastli.firstChild;
        // 设置最后一个li的第一个孩子节点的背景图片
        span.style.backgroundImage = "url(images/z-end.gif)";
      }
    }

    // 封装一个显示隐藏的函数
    function showHide(parentNode) {
      // 获取被点击菜单图标元素里面的第一个ul
      var ul = parentNode.getElementsByTagName("ul")[0];
      // 利用三步/三元运算,控制点击后ul的显示与隐藏
      ul.style.display = ul.style.display == "none" ? "block" : "none";
      // 获取被点击菜单图标元素里面的第一个图片标签span
      var span = parentNode.getElementsByTagName("span")[0];
      span.style.backgroundImage =
        ul.style.display == "none"
          ? "url(images/z-plus.jpg)"
          : "url(images/z-sub.jpg)";
    }

    // 页面加载完执行init
    window.onload = init;
  </script>
</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java漂亮的树形菜单制作实例(源码),森林状的关系图,文本域,用于显示点击的节点名称,使用了JTree,可以看作是一个jTree的用法演示实例。树形菜单应用广泛,这个Tree制作漂亮,相信会让很多朋友从中学习到实现的方法,效果如演示截图所示。下面是相关的代码片段:   DefaultMutableTreeNode root = new DefaultMutableTreeNode("设置"); //生成根节点   DefaultMutableTreeNode node1=new DefaultMutableTreeNode("常规"); //生成节点一   node1.add(new DefaultMutableTreeNode("默认路径")); //增加新节点到节点一上   node1.add(new DefaultMutableTreeNode("保存选项"));   root.add(node1); //增加节点一到根节点上   root.add(new DefaultMutableTreeNode("界面"));   root.add(new DefaultMutableTreeNode("提示声音"));   root.add(new DefaultMutableTreeNode("打印"));   JTree tree = new JTree(root); //得到JTree的实例   DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer)tree.getCellRenderer(); //得到JTree的Renderer   renderer.setLeafIcon(null); //设置叶子节点图标为空   renderer.setClosedIcon(null); //设置关闭节点的图标为空   renderer.setOpenIcon(null); //设置打开节点的图标为空   tree.addTreeSelectionListener(new TreeSelectionListener() {//选择节点的事件处理   public void valueChanged(TreeSelectionEvent evt) {   TreePath path = evt.getPath(); //得到选择路径   String info=path.getLastPathComponent().toString(); //得到选择的节点名称   jtfInfo.setText(info); //在文本域中显示名称   }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值