序言:
随着互联网的普及和网页制作技术的发展,越来越多的网友开始制作自己的网站。做为网站最重要的部分—导航菜单也出现了各式各样的设计和制作方法。其中下拉式导航菜单已经成为多栏目大信息量网站的首选导航方式。那么,在下面我将简单介绍一下众多下拉菜单制作方法中完全使用JS自动生成的“自适应分辨率可扩展二层JS下拉菜单”的工作原理和使用方法。
1、 S下拉菜单原理
下拉菜单实际上就是在开始的时候显示一级或者说是主菜单(图一)。当触发条件(例如:鼠标移动到上面时)显示次级菜单(图二)。
图一
seout="null" orig_onmouseover="null">
图二
那么如何实现这样的效果呢。其实很简单。所有的下拉菜单都是通过图层的显隐来实现的。在文件下载的时候,其实主菜单和次级菜单都以经形成或者说下载到了客户端也就是你的机器里。只是次级菜单被隐藏起来。隐藏的方法一般是使用javascript 配合css控制次级菜单的图层的属性visibility为隐藏。所以在开始的使用你是看不见次级菜单的。当满足触发条件(例如:鼠标移动到上面)时,在使用javascript来控制次级菜单显示。当在次满足触发条件时(例如:鼠标移开),控制次级菜单隐藏。
我们现在讲的这个“自适应分辨率可扩展二层JS下拉菜单”可以自动适应浏览器分辨率的改变始终保持相对位置。可以方便的自己定制菜单显示内容及连接页面。可以随意扩充主导航和次导航的栏目个数。可以自由改变连接和导航表格的样式和外观等等。
2、"自适应分辨率可扩展二层JS下拉菜单"js代码详解
//--------------- 主导航条内容 ------------// var mainLayer=new Array("蓝色理想","动意营造");//主导航栏目
//--------------- 次导航条内容 ------------// var subLayer0=new Array("论坛","文献"); //导航栏目一下的次级栏目 var subLayerHttp0=new Array("#","#");//主导航栏目一下的次级栏目连接地址 var subLayer1=new Array("论坛","文献");//导航栏目二的次级栏目 var subLayerHttp1=new Array("#","#");//主导航栏目二的次级栏目连接地址
//--------------- 主导航条Table参数调整 ------------// var mainTableTdWidth=100; //每个TD的宽度,调整主导航内容间距 var mainTableBorder=0; //调整主导航表格边框宽度 var mainTableCellspacing=0; //调整主导航表格Cellspacing var mainTableCellpadding=1; //调整主导航表格Cellpadding var mainTableBgcolor="#000000"; //调整主导航表格背景色 var mainTableBordercolor=""; //调整主导航表格编框颜色 var mainTableBackgroundImg=""; //调整主导航表格背景图片url地址 var hrefClassName="link" //调整url风格样式 var mainTableTdBgcolor="B2CBCF"; //调整主导航表格Td色
//--------------- 次导航条Table参数调整 ------------// var subTableBorder=0; //调整次导航条表格边框宽度 var subTableCellspacing=0; //调整次导航条表格Cellspacing var subTableCellpadding=1; //调整次导航条表格Cellpadding var subTableBgcolor="#000000"; //调整次导航条表格背景色 var subTableBordercolor=""; //次导航条表格编框颜色 var subTableBackgroundImg=""; //次导航条表格背景图片url地址 var subTableTdBgcolor="B2CBCF"; //调整次导航表格Td色 var sbuTabbleTop=21; //次导航表格上下微调 var sbuTabbleLeft=-1; //次导航表格左右微调
//--------------- 系统参数*请勿调整 ------------// var layerMax=mainLayer.length+10; var layerName="index";
//--------------- 生成下拉菜单 ------------// function createMainLayer(){ document.write("<table border=0 cellspacing=0 cellpadding=0><tr><td><div id='wall' onmouseout=layervib('visible','"+layerMax+"') style='position:relative; left:0px; top:0px; width:100%; z-index:1' ><table width="+mainLayer.length*mainTableTdWidth+" border='"+mainTableBorder+"' cellspacing='"+mainTableCellpadding+"' cellpadding='"+mainTableCellpadding+"' bgcolor='"+mainTableBgcolor+"' bordercolor='"+mainTableBordercolor+"' background='"+mainTableBackgroundImg+"'><tr>"); for(i=0;i<mainLayer.length;i++){ document.write("<td width='"+mainTableTdWidth+"' bgcolor='"+mainTableTdBgcolor+"' class='"+hrefClassName+"' onmouseover=layervib('visible','"+i+"')> <a href='#'>"+mainLayer[i]+"</a></td>"); } document.write("</tr></table>");
for(j=0;j<mainLayer.length;j++){ createSubLayer(j); } document.write("</div></table></td></tr></table>"); }
//--------------- 生成每项下拉菜单内容 ------------// function createSubLayer(num){ var subLayerName= layerName +num; var subLayerLeft=(mainTableTdWidth*num)+mainTableCellpadding+mainTableBorder; var subLayerList=eval("subLayer"+num); var subLayerHttpList=eval("subLayerHttp"+num); document.write("<div id='"+subLayerName+"' style='position:absolute; left:"+(subLayerLeft+sbuTabbleLeft)+"px; top:"+((mainTableBorder+mainTableCellspacing+mainTableCellpadding)*2+sbuTabbleTop)+"px; z-index:2; height: 24px; visibility: hidden' onmouseover=layervib('visible','"+num+"') onmouseout=layervib('visible','"+layerMax+"')>"); if(subLayerList.length!=0){ document.write("<table width='100px' border='"+subTableBorder+"' cellspacing='"+subTableCellpadding+"' cellpadding='"+subTableCellpadding+"' bgcolor='"+subTableBgcolor+"' bordercolor='"+subTableBordercolor+"' background='"+subTableBackgroundImg+"'") for(h=0;h<subLayerList.length;h++){
document.write("<tr><td bgcolor='"+subTableTdBgcolor+"' width='100%' class='link'> <a href='"+ subLayerHttpList [h]+"' class='link'>"+subLayerList[h]+"</a> </td></tr>"); } document.write("</table>"); } document.write("</div>");
}
//------------------------------次菜单显隐控制--------------------------// function layervib(type,num){ var H=type; var temp=(H='visible'?'hidden':'visible') for(var i=0;i<mainLayer.length;i++){ var E=eval('document.all.index'+i+'.style'); var H=eval(i); if(i==num){E.visibility=type}else{E.visibility=temp}; } }
[网页制作]下拉菜单全攻略之Dreamweaver篇
|