网页菜单之---树形目录 |
内容的还有一种经典组织形式就是目录树。这个目录树结构用下面的代码实现起来非常简单。可以说比以前的5dmedia所用的目录路还要简单的多。下面请看: 目录树菜单 源代码名称:Smart Folding Menu Tree Script(IE适用) 作者: Mark Quinn 类型:内部js代码 制作方法: 第一步:嵌入代码。把下面这段代码复制到<head></head>标签之间。 <style> <!-- #foldheader{cursor:hand ; font-weight:bold ; list-style-image:url(fold.gif)} #foldinglist{list-style-image:url(list.gif)} //--> </style> <script language="JavaScript1.2"> <!-- /** * Based on Folding Menu Tree * Dynamic Drive (www.dynamicdrive.com) * For full source code, installation instructions, * 100's more DHTML scripts, and Terms Of * Use, visit dynamicdrive.com * * Updated to support arbitrarily nested lists * by Mark Quinn (mark@robocast.com) November 2nd 1998 */ var head="display:''" img1=new Image() img1.src="fold.gif" img2=new Image() img2.src="open.gif" function change(){ if(!document.all) return if (event.srcElement.id=="foldheader") { var srcIndex = event.srcElement.sourceIndex var nested = document.all[srcIndex+1] if (nested.style.display=="none") { nested.style.display='' event.srcElement.style.listStyleImage="url(open.gif)" } else { nested.style.display="none" event.srcElement.style.listStyleImage="url(fold.gif)" } } } document.onclick=change //--> </script> 第二步:制作菜单。将代码插入到页面中要出现树形目录的地方。下面是一段代码范例: <ul> <li id="foldheader">News</li> <ul id="foldinglist" style="display:none" style=&{head};> <li><a href="http://www.cnn.com">CNN</a></li> <li><a href="http://www.abcnews.com">ABC News</a></li> <li><a href="http://www.vancouversun.com">Vancouver Sun</a></li> </ul> <li id="foldheader">Games</li> <ul id="foldinglist" style="display:none" style=&{head};> <li><a href="http://www.gamespot.com">GameSpot</a></li> <li><a href="http://www.happypuppy.com">Happy Puppy</a></li> <li><a href="http://www.gamecenter.com">Game Center</a></li> </ul> <li id="foldheader">Software</li> <ul id="foldinglist" style="display:none" style=&{head};> <li><a href="http://www.download.com">outer 1</a></li> <li><a href="http://www.hotfiles.com">outer 2</a></li> <li id="foldheader">Nested</li> <ul id="foldinglist" style="display:none" style=&{head};> <li><a href="http://www.windows95.com">nested 1</a></li> <li><a href="http://www.shareware.com">nested 2</a></li> </ul> <li><a href="http://www.windows95.com">outer 3</a></li> <li><a href="http://www.shareware.com">outer 4</a></li> </ul> </ul> 如果我们仔细分析一下的话不难发现制作列表的秘诀就是一个大的列表 <li id="foldheader">主目录名称</li> <ul id="foldinglist" style="display:none" style=&{head};> <li><a href="对应地址 ">子目录名称</li> <li><a href="对应地址 ">子目录名称</li> <li><a href="对应地址 ">子目录名称</li> </ul> 这样的好处是添加子菜单非常容易只要不断制作一些列表出来,并且加上连接就可以制作出下拉菜单了。如果要实现多级的子菜单也很容易只要将某项子菜单的id设置成为foldheader并且不加连接,后面的格式就如加灰部分一样和前面的代码是一样的,嵌套使用。 第三步:将一段代码复制到上面列表代码的下面。 <script language="JavaScript1.2"> <!-- /** * Get cookie routine by Shelley Powers * (shelley.powers@ne-dev.com) */ function get_cookie(Name) { var search = Name + "=" var returnvalue = ""; if (document.cookie.length > 0) { offset = document.cookie.indexOf(search) // if cookie exists if (offset != -1) { offset += search.length // set index of beginning of value end = document.cookie.indexOf(";", offset); // set index of end of cookie value if (end == -1) end = document.cookie.length; returnvalue=unescape(document.cookie.substring(offset, end)) } } return returnvalue; } if (get_cookie(window.location.pathname) != ''){ var openresults=get_cookie(window.location.pathname).split(" ") for (i=0 ; i < openresults.length ; i++){ foldinglist[openresults[i>.style.display='' document.all[foldinglist[openresults[i>.sourceIndex - 1].style.listStyleImage="url(open.gif)" } } if (document.all){ var nodelength=foldinglist.length-1 var nodes=new Array(nodelength) var openones='' } function check(){ for (i=0 ; i <= nodelength ; i++){ if (foldinglist[i].style.display=='') openones=openones + " " + i } document.cookie=window.location.pathname+"="+openones } if (document.all) document.body.onunload=check //--> </script> 第四步:将文件夹和菜单项前面的小图标图片文件复制到和网页文件同样的位置。命名规则: 关闭的文件夹:fold.gif 打开的文件夹:open.gif 菜单项目:list.gif 整个菜单就做好了。如果对于菜单文字不满意,可以修改第一步中的 <style> <!-- #foldheader{cursor:hand ; font-weight:bold ; list-style-image:url(fold.gif)} #foldinglist{list-style-image:url(list.gif)} //--> </style> 这部分,当然前提是你要懂得一些css代码。 |