- ベストアンサー
折りたたみメニューについて
- 折りたたみメニューを使いたいと考えています。
- 折りたたみメニューでは、クリックしたメニューの色が変更され、新たなメニューが表示されます。
- 開かれたメニューの背景画像を常に変更したいのですが、方法がわかりません。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ちょっと作ってみました。 hoge.htm,hoge.css(css用),hoge.js(javascript用) ,active.gif(アクティブな背景),passive.gif(パッシブな背景) という5つのファイルをご用意ください。 //hoge.htm <html> <head> <script type="text/javascript" src="hoge.js"></script> <link rel="stylesheet" type="text/css" href="hoge.css" /> </head> <body> <ul id="menu"> <li> <div><a href="#">LINK1</a></div> <ul> <li><a href="./page1.html" target="right">MENU1-1</a></li> <li><a href="./page2.html" target="right">MENU1-2</a></li> </ul> </li> <li> <div><a href="#">LINK2</a></div> <ul> <li><a href="./page3.html" target="right">MENU2-1</a></li> <li><a href="./page4.html" target="right">MENU2-2</a></li> </ul> </li> </ul> </body> </html> //hoge.css #menu,#menu ul{ margin:0px; padding:0px; } #menu li{ list-style-type:none; } #menu li a{ height:20px; width:164px; display:block; text-decoration:none; background-image:url(passive.gif); } .hidden{ display:none; } #menu li .active a,#menu li a:hover{ background-image:url(active.gif); } //hoge.js window.onload=init; function init(){ var menu=document.getElementById("menu"); var c=menu.firstChild; while(c){ if(c.nodeName=="LI"){ var cc=c.firstChild; while(cc){ if(cc.nodeName=="UL"){cc.className="hidden";} if(cc.nodeName=="DIV"){cc.onclick=changemenu;} cc=cc.nextSibling; } } c=c.nextSibling; } } function changemenu(){ this.className=this.className=="active"?"":"active"; var n=this.nextSibling; while(n){ if(n.nodeName=="UL") n.className=n.className=="hidden"?"":"hidden"; n=n.nextSibling; } return false; }
お礼
ご丁寧に作成してくださり有難うございます。早速設置させていただきましたところ、探していた機能そのものでしたので大変助かりました。