网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 网页制作-> HTML-> 下拉菜单全攻略之Javascript篇

下拉菜单全攻略之Javascript篇
作者:Poorfish 来源:蓝色理想 加入时间:2004-11-30
相关文章
  • 在javascript中调用vbscript的函数,构造一个javascript版的trim 函数
  • javascript表单之间的数据传递
  • 一个简单的javascript菜单
  • 一组JavaScript绘图函数
  • asp自动生成javascript检验函数
  • 用JavaScript实现利用FLASH嵌入声音
  • Javascript设计漫天雪花
  • Javascript模拟游戏中的弹出菜单效果
  • 利用JAVASCRIPT制作简单动画
  • 首页地址添加到收藏夹(javascript)
  • 相关书籍:
  • JavaScript 权威指南(第四版)
  • JavaScript傻瓜指南
  • 自适应分辨率可扩展二层JS下拉菜单

      序言:

      随着互联网的普及和网页制作技术的发展,越来越多的网友开始制作自己的网站。做为网站最重要的部分—导航菜单也出现了各式各样的设计和制作方法。其中下拉式导航菜单已经成为多栏目大信息量网站的首选导航方式。那么,在下面我将简单介绍一下众多下拉菜单制作方法中完全使用JS自动生成的“自适应分辨率可扩展二层JS下拉菜单”的工作原理和使用方法。

      1、 S下拉菜单原理

      下拉菜单实际上就是在开始的时候显示一级或者说是主菜单(图一)。当触发条件(例如:鼠标移动到上面时)显示次级菜单(图二)。

                           

    图一

    图二

        那么如何实现这样的效果呢。其实很简单。所有的下拉菜单都是通过图层的显隐来实现的。在文件下载的时候,其实主菜单和次级菜单都以经形成或者说下载到了客户端也就是你的机器里。只是次级菜单被隐藏起来。隐藏的方法一般是使用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+"')>&nbsp;<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'>&nbsp;<a href='"+ subLayerHttpList [h]+"' class='link'>"+subLayerList[h]+"</a>&nbsp;</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};
    }
    }

      3、"自适应分辨率可扩展二层JS下拉菜单"js代码使用方法。

      (1) 将上面的代码存储为js_daohang.js.放在和调用的页面同一个目录下。
      (2) 在需要使用的叶面中在如下位置添加<script language=javascript src=js_daohang.js>

    <html>
    <head>
    <title>平安证券柜台系统...</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <link rel="stylesheet" href="text.css" type="text/css">
    <script language=javascript src=js_daohang.js>
    </head>

      (3)在需要显示下拉菜单的地方使用

    <script language=javascript>
    createMainLayer();
    </script>

      来产生菜单。如下例。可以随意摆放到页面的任何位置。

     

    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td width="300">&nbsp;</td>
    <td width="71%" align="center">
    <script language=javascript>
    createMainLayer();
    </script>
    </td>
    </tr>
    </table>

      (4)、如何添加新的主菜单及次级菜单的栏目。

      假设我们要在已有的栏目里新增加一个“七色鸟”栏目。下面有“论坛”和“文献”两个次级栏目。那么我么首先要在代码的如下部分添加“七色鸟”。

    var mainLayer=new Array("蓝色理想","动意营造","七色鸟");//主导航栏目
    0 1 2

      然后在如下的位置添加“论坛”和“文献”栏目及连接地址。

    var subLayer0=new Array("论坛","文献"); //导航栏目一下的次级栏目
    var subLayerHttp0=new Array("#","#");//主导航栏目一下的次级栏目连接地址
    var subLayer1=new Array("论坛","文献");//导航栏目二的次级栏目
    var subLayerHttp1=new Array("#","#");//主导航栏目二的次级栏目连接地址
    var subLayer2=new Array("论坛","文献");//导航栏目三的次级栏目
    var subLayerHttp2=new Array("#","#");//主导航栏目三的次级栏目连接地址

      注意:蓝色部分是需要新添加的部分。红色部分是要修改的部分。要和上面的编号一一对应。 (5)、其他细节调整请参考代码详解部分。

      4、附注及扩充。

      代码中主要使用的函数及方法详解。

    Document.write("tmp")在页面中写入tmp.
    var subLayerHttp1=new Array();定义一个新的数组subLayerHttp1.
    For(I=0;I<tmp;I++){语句}设置I=0,当I的值小于tmp的值时执行语句,同时I的值加1。
    var temp=(H=值1?值2:值3)当H的值等于值1的时候temp等于值2。反之temp的值等于值3。

    增强功能。
    //--------------- 系统参数*请勿调整 ------------//
    var layerMax=mainLayer.length+10;
    var layerName="index"

    可以设置layerName=其他字段以生成新的下拉菜单。使页面内共存两个下拉菜单。

     


    [文章录入员:迷茫森林]

    相关文章
  • 在javascript中调用vbscript的函数,构造一个javascript版的trim 函数
  • javascript表单之间的数据传递
  • 一个简单的javascript菜单
  • 一组JavaScript绘图函数
  • asp自动生成javascript检验函数
  • 用JavaScript实现利用FLASH嵌入声音
  • Javascript设计漫天雪花
  • Javascript模拟游戏中的弹出菜单效果
  • 利用JAVASCRIPT制作简单动画
  • 首页地址添加到收藏夹(javascript)
  • 相关书籍:
  • JavaScript 权威指南(第四版)
  • JavaScript傻瓜指南
  • 本站推荐内容

    近期主机类热搜关键词:
    美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

    HTML
    DreamWeaver
    FrontPage
    FireWorks
    Flash
    HTML
    其它
    电脑教程阅读排行
    ·显示你个性的鼠标指针
    ·HTML 语法
    ·如何利用ASP把图片上传到数据库...
    ·VBScript教程(一)
    ·JavaScript[对象.属性...
    ·JavaScript 小技巧全集...
    ·VBScript教程(二)
    ·CSS样式表高效使用的技巧
    ·VBScript教程(三)
    ·多种网页弹出窗口代码