树形折叠菜单

本文介绍了一个简单的树形折叠菜单的实现方法,通过HTML和JavaScript创建了一个具有展开和折叠功能的菜单系统。该菜单可以根据子菜单项的存在与否显示不同的图标,并通过点击图标来控制子菜单的显示与隐藏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>树形折叠菜单</title>
<style type="text/css">


ul{ list-style:none;}
#menu{ text-align:left; margin:30px; padding:0; cursor:pointer;}
.plus{ float:left; width:32px; height:16px; background-position:0 50%; background-repeat:no-repeat;}
.sub{ float:left; width:18px; height:18px;background-position:0 50%; background-repeat:no-repeat; }
</style>
</head>
<script language="javascript">
function show(){
var menus=document.getElementById("menu").getElementsByTagName("li");
for(var i=0;i<menus.length;i++){
var uls=menus[i].getElementsByTagName("ul");
var span1=document.createElement("span");
var span2=document.createElement("span");
if(uls.length>0){
span1.className="plus";
span1.style.backgroundImage="url(images/z-plus.jpg)";
span1.onclick=function(){
init(this.parentNode);
}
menus[i].insertBefore(span1,menus[i].firstChild);
uls[0].style.display="none";
}else{
span1.className="sub";
span2.className="sub";
span1.style.backgroundImage="url(images/z-top.gif)";
span2.style.backgroundImage="url(images/doc.gif)";
menus[i].insertBefore(span2,menus[i].firstChild);
menus[i].insertBefore(span1,menus[i].firstChild);
}

}
}

function init(obj){
var ul=obj.getElementsByTagName("ul")[0];
ul.style.display=(ul.style.display=="none")?"block":"none";
var span=obj.getElementsByTagName("span")[0];
span.style.backgroundImage=(ul.style.display=="none")?"url(images/z-plus.jpg)":"url(images/z-sub.jpg)";

}
window.onload=show;
</script>
<body>
<ul id="menu">
<li>名站导航
    <ul>
        <li>百度贴吧
            <ul>
                <li>旅游吧</li>
                    <li>音乐吧</li>
                    <li>摄影吧</li>
                </ul>
            </li>
            <li>新浪微博</li>
            <li>腾讯空间</li>
            <li>网易邮箱</li>
            <li>淘宝商城</li>
        </ul>
    </li>
    <li>常用软件
    <ul>
        <li>杀毒软件</li>
            <li>聊天工具</li>
            <li>网页浏览</li>
        </ul>
    </li>
    <li>热门游戏
    <ul>
        <li>魔兽争霸</li>
            <li>大话西游</li>
            <li>生化危机</li>
            <li>反恐精英</li>
            <li>英雄联盟</li>
        </ul>
    </li>
    <li>桌面背景
    <ul>
        <li>制服诱惑</li>
            <li>美女写真</li>
            <li>男性魅力</li>
        </ul>
    </li>
</ul>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值