DIV+CSS构成的树型菜单

作者:海水发布时间:05-12-03浏览次数:545[ ]

了做个树型菜单,看了很多代码,但都没这个简洁,外国人写的,一起分享下:
1 先定义个JS:

<script type="text/javascript">
function toggleMenu(id){
element = document.getElementById(id);
element.className = (element.className.toLowerCase() == 'expanded'?'collapsed':'expande
d');
}
onload = function() {//自动载入闭合状态
toggleMenu('submenuid0');
toggleMenu('submenuid1');
}
</script>


2 css

body {
margin: 0px;
padding: 0;
font: 12px "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
background: #FFFFFF;
text-align: center;
}

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

#treenav {
margin: 10px;
text-align: left;
}

#treenav ul li {
margin: 1px 0;
padding: 0;
font-size: 11px;
}

#treenav ul.expanded {
display: block;
}

#treenav ul.expanded,#treenav ul.collapsed {
margin: 5px 10px;
}

#treenav ul.collapsed {
display: none;
}

.expanded li,.collapsed li{
/*border-bottom: 1px dashed #CCCCCC;*/
width: 200px;
}

.listhead {
font-weight: bold;
display: block;
font-size: 12px;
color: #333333;
background: #F1F1F1;
padding: 3px;
width: 120px;
margin: 1px 0;
}

#treenav a {
text-decoration: none;
color: #666666;
}

#treenav a:hover {
color: #990000;
}


3 定义树型结构

<!-------------------------------------------------------------------------------------------------------->
<ul>
      <li><a href="somepage" οnclick="toggleMenu('submenuid0'); return false;" class="listhea
d">第一章 前言</a> 
  
        <ul class="expanded" id="submenuid0">

  <li><a href="#" οnclick="toggleMenu('sub0_submenuid1');">第一节 网站设计概述</a>
     <ul class="collapsed" id="sub0_submenuid1">
     <li><a href="#">网页制作一般过程</a></li>
     <li><a href="#">网页设计的价格标准</a></li>          
 </ul>
  </li>  
  
  <li><a href="#" οnclick="toggleMenu('sub0_submenuid2');">第二节 网站设计概述</a>
     <ul class="collapsed" id="sub0_submenuid2">
     <li><a href="#">网页设计的价格标准</a></li>          
 </ul>
  </li> 
        
</ul>

  </li>
 </ul>
<!-------------------------------------------------------------------------------------------------------->
<ul>
      <li><a href="somepage" οnclick="toggleMenu('submenuid1'); return false;" class="listhea
d">第一章 前言</a> 
  
        <ul class="expanded" id="submenuid1">

  <li><a href="#" οnclick="toggleMenu('sub1_submenuid1');">第一节 网站设计概述</a>
     <ul class="collapsed" id="sub1_submenuid1">
     <li><a href="#">网页制作一般过程</a></li>
     <li><a href="#">网页制作一般过程</a></li>
     <li><a href="#">网页制作一般过程</a></li>
     <li><a href="#">网页制作一般过程</a></li>
     <li><a href="#">网页设计的价格标准</a></li>
     <li><a href="#">网页设计的价格标准</a></li>          
 </ul>
  </li>  
  
  <li><a href="#" οnclick="toggleMenu('sub1_submenuid2');">第二节 网站设计概述</a>
     <ul class="collapsed" id="sub1_submenuid2">
     <li><a href="#">网页制作一般过程</a></li>
     <li><a href="#">网页制作一般过程</a></li>
     <li><a href="#">网页制作一般过程</a></li>
     <li><a href="#">网页制作一般过程</a></li>
     <li><a href="#">网页设计的价格标准</a></li>
     <li><a href="#">网页设计的价格标准</a></li>          
 </ul>
  </li> 
        
</ul>

  </li>
 </ul>

<!--------------------------------------------------------------------------------------------------------> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然!以下是一个示例,使用 HTML、CSS 和 JavaScript 创建一个可以展开收缩并且可以选择的形结构: ```html <!DOCTYPE html> <html> <head> <style> /* 节点的样式 */ .tree-node { margin-left: 20px; cursor: pointer; } /* 节点的连接线 */ .tree-connector { position: absolute; border-left: 1px solid #ccc; height: 100%; left: -20px; } </style> </head> <body> <div id="tree"> <ul> <li class="tree-node" onclick="toggleNode(this)"> <span>Root</span> <ul> <li class="tree-node" onclick="toggleNode(this)"> <span>Child 1</span> <ul> <li><input type="checkbox" class="tree-checkbox">Grandchild 1</li> <li><input type="checkbox" class="tree-checkbox">Grandchild 2</li> </ul> </li> <li><input type="checkbox" class="tree-checkbox">Child 2</li> <li class="tree-node" onclick="toggleNode(this)"> <span>Child 3</span> <ul> <li><input type="checkbox" class="tree-checkbox">Grandchild 3</li> </ul> </li> </ul> </li> </ul> </div> <script> // 展开/收缩节点 function toggleNode(node) { const childUl = node.querySelector('ul'); if (childUl) { childUl.style.display = childUl.style.display === 'none' ? 'block' : 'none'; } } </script> </body> </html> ``` 这个示例创建了一个带有展开收缩功能和可选择节点的形结构。每个节点都使用 `<li>` 标签表示,并使用 `<ul>` 标签嵌套子节点。点击每个节点时,通过 JavaScript 的 `onclick` 事件触发 `toggleNode()` 函数来展开或收缩子节点。同时,每个节点下方有一个复选框,可以选择或取消选择该节点。 你可以根据自己的需求修改这个示例,添加更多节点或自定义样式。希望能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值