[转载]如何实现微软网站左侧导航条
仿XP风格的导航条制作教程
作者:深蓝色系统
日期:2002年1月底
访问过Microsoft网站的朋友们一定对他们页面上左侧的XP风格的导航条很感兴趣。微软一直都在走在最新技术的前言,通过这么一个小小的导航条我们就可以看出来,其中的创意和技术含量是十分让人佩服的。下面我就通过一个实例简单的讲解一下这种导航条的做法,由于我的水平有限,这种导航条所使用的脚本中的部分代码我也不是很明白,所以这里重点讲用法,其他的问题您可以自己研究。
请先看一下这种导航条的演示页面:
http://www.epubcn.com/originalspace/computer_relative/msleftbar/sample/sample.htm
OK,看过演示后,相信您已经迫不及待的想知道如何实现这种效果了,下面我就分别讲解一下其中的内容。
在讲解之前,请先下载我为您准备的演示代码(11KB)。您可以对照文章分析一下代码,相信您很快就能运用自如了。
简单的说,制作这种导航条用到了XML和微软的脚本封装以及JScript技术。实现这种效果所需要的最基本的文件是:一个htm页面、一个xml文件、一个htc文件以及一个css文件。当然,这里只限于我从微软网站分析出来的页面文件,您也可以将其中的部分文件合并或者分解,这都是自由发挥了,这里不作讨论。
演示页面共分为4个文件:sample.htm,default.css,default.htc,submenu.xml,其中:sample.htm即刚才的演示的htm文件;default.css为样式表定义文件;default.htc里面封装了导航条的主要实现代码,使用JScript编写;submenu.xml为弹出菜单的菜单项说明文件。下面我们依次都四个文件进行说明:
一、sample.htm
我们拿导航条中的一部分的HTML代码来说明,如下: <!-- Begin of LeftBar's Code-->
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td>
<table class="flyoutMenu" menudata="submenu.xml" width="180" cellpadding="2" cellspacing="0" border="0" >
<tr>
<td>
<table width="175" cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="flyoutLink" handle="1000">Executable制作软件 </td>
</tr>
</table>
<table width="175" cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="flyoutLink" handle="1236">Welcome to my website</td>
</tr>
</table>
<table width="175" cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="flyoutLink" handle="1193">OH YES! ^_^</td>
</tr>
</table>
<table width="175" cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="flyoutLink" handle="1339">Technical Resources</td>
</tr>
</table>
<table width="175" cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="flyoutLink" handle="1408">Using Windows XP</td>
</tr>
</table>
<table width="175" cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="flyoutLink" >Downloads</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- End of LeftBar's Code-->
大家可能已经注意到了,整个菜单都是使用表格来实现的,包括每一个主菜单项,都是使用一个表格来实现的。请注意上面代码中以不同颜色加粗的代码,这些代码都是最关键的。其中:
(1)class=flyoutMenu和class=flyoutLink是定义表格以及文字的样式的,这些都是在default.css文件中定义的,后面我们会讲到这个文件,这里就不赘述了。
(2)menudata="submenu.xml"是引用了外部文件submenu.xml,刚才我们已经提过,submenu.xml是主菜单项的子菜单项内容定义文件,里面包含了子菜单项的文字以及链接。submenu.xml文件也在后面介绍,这里暂不提。
(3)handle="XXXX"是具有子菜单项的主菜单项才有的,如果没有该主菜单没有弹出子菜单,则无需加入handle值。handle等于的值可以是任何非中文字符。其含义为子菜单项的句柄(句柄的含义请参看有关编程书籍),它对应于submenu.xml文件中的对应项。等我们介绍完submenu.xml大家自然会明白。
【提示】增加任何主菜单项需要按照上面的代码加入相应的表格,有子菜单项的需要加入handle说明,并在submenu.xml中加入子菜单项说明。
二、default.css
default.css文件中定义了菜单的外观样式,内容请大家参看default.css中的详细代码。如果您对CSS还不是很熟悉,请先学习CSS相关的内容。制作这种导航条首先必须在页面头部把default.css文件包含进来,如下所示:
<link rel="stylesheet" type="text/css" href="default.css">
在default.css中,有一个大家需要注意的地方: .flyoutMenu {
background-color: #F1F1F1;
border-color: #999999;
border-width: 0 1px 1px 0;
border-style: solid;
behavior: url(default.htc);
}
在flyoutMenu定义中,请看上面加色加粗的代码,这里引用了一个外部文件default.htc,该文件我们刚才也已经提到了,里面包含了导航条的主要实现代码,使用JScript编写。而我们后面讲到的自定义菜单多数都和这个文件有关,这里大家知道我们在什么地方引用它就行了,其他的我们后面再讲。