当前位置: 首页 > 图文教程 > 网络编程 > Javascript > javascript设计网页中的下拉菜单

Javascript
JS 参数传递的实际应用代码分析
prototype与jquery下Ajax实现的差别
用JS写的简单的计算器实现代码
javascript 数组操作实用技巧
JavaScript 中级笔记 第二章
JavaScript 中级笔记 第三章
JavaScript 中级笔记 第四章 闭包
JavaScript 中级笔记 第五章 面向对象的基础
Mootools 1.2教程 函数
Mootools 1.2教程 事件处理
通过Mootools 1.2来操纵HTML DOM元素
Mootools 1.2教程 设置和获取样式表属性
Mootools 1.2教程 输入过滤第一部分(数字)
Mootools 1.2教程 输入过滤第二部分(字符串)
Mootools 1.2教程 Fx.Tween的使用
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
MooTools 1.2中的Drag.Move来实现拖放
Mootools 1.2教程 正则表达式
Mootools 1.2教程 定时器和哈希简介
Mootools 1.2教程 滚动条(Slider)

Javascript 中的 javascript设计网页中的下拉菜单


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-04   浏览: 172 ::
收藏到网摘: n/a

    在网页制作时,为了更好地组织信息,使显示的信息分类明确、层次清晰,网页制作者往往费尽心机。常用的方法有用树型结构显示信息,用表格进行网页布局,用框架(frame)组织页面等等。但对于习惯了Windows操作系统的用户来说,利用菜单操作可以算是最自然的方法了。下面我们就来看一下怎样在网页中设计下拉式菜单。   下拉式菜单由若干个显示在窗口顶部的主菜单条和各个菜单条下面的子菜单组成。每个子菜单往往还包含几个子菜单项。通常,只有菜单条显示在窗口中,并且当鼠标指针指向菜单条时,菜单条的子菜单才显示出来。当鼠标指针离开菜单时,子菜单则隐藏起来,回到只显示主菜单条的状态。

  根据上述下拉菜单的特点,我们就可以开始在网页中制作下拉菜单了。我们在网页的顶部放置一个区域,用于显示主菜单条,每一个主菜单条作为一个超链接横向置于该区域中,当然除非菜单项没有子菜单,一般情况下这里的超链接不指向任何地址,只用它来激活子菜单。区域的格式见程序1。

  <DIV ID='pad' ……>

  <A ID='pad1' onmouseout="mouseout(); hideMenu();" onmouseover="mouseover();

  doMenu('idpad1');" onclick="window.event.returnValue=false;">菜单项一</A>

  <A ID='pad2' onmouseout="mouseout(); hideMenu();" onmouseover="mouseover();

  doMenu('idpad2');" onclick="window.event.returnValue=false;">菜单项二</A>

  ……

  </DIV>   

  接着,我们根据主菜单条的个数定义相应的子菜单,为每个子菜单定义一个区域,该区域中第一个元素是一条横线,然后每个子菜单作为一个超链接置于该区域中,由于子菜单纵向排列,每个超链接后加<BR>换行。当然这个区域现在还不能显示出来,但当它被激活时,其显示位置应位于其他对象之上,所以其style属性置为STYLE=' display:none; z-index:9;'。 注意每个超链接的ID均应与其主菜单的ID相同,以便于统一处理。格式见程序2。

  <SPAN ID='idpad1' STYLE='display:none; z-index:9;' onmouseout='hideMenu();'>

   <HR STYLE='position:absolute;left:0;top:0;color:white' SIZE=1>

   <DIV >

   <A ID='pad1' HREF='11.htm' onmouseout="mouseout();" onmouseover="mouseover()">

   子菜单项一一</A><BR>

   <A ID='pad1' HREF='12.htm' onmouseout="mouseout();" onmouseover="mouseover()">

   子菜单项一二</A><BR>

   <HR STYLE='color:white' SIZE=1><!--如有必要可以用横线对子菜单分组-->

   <A ID='pad1' HREF='13.htm' onmouseout="mouseout();" onmouseover="mouseover()">

   子菜单项一三</A><BR>

  ……

   </DIV>

  </SPAN>   

  经过上面的步骤,下拉菜单的格式已经定义好了,下面的任务就是控制这些子菜单的显示和隐藏。

  当鼠标移动到主菜单条上时,应显示其子菜单,我们通过执行doMenu(MenuID)响应主菜单的onmouseover事件来完成。过程的参数MenuID是代表子菜单的区域的ID,过程执行时先设置window.event. cancelBubble = true,并计算子菜单显示的位置,包括左上角和右下角坐标。然后执行下列语句来显示子菜单所在区域:

  CurMenu.style.clip = "rect(0 0 0 0) ";CurMenu.style.display = "block";

  当鼠标移出主菜单时有两种情况,一种情况是鼠标在子菜单及其主菜单之间移动,这时不能隐藏子菜单;另一种情况是鼠标移出了子菜单及其主菜单的区域,这时需要隐藏子菜单。我们通过执行hideMenu()响应主菜单的onmouseout,同时执行hideMenu()响应子菜单所在区域的onmouseout事件来完成。

  网页中的另外两个函数mouseout() 和mouseover() 的功能很简单,分别用于处理鼠标移动时菜单项的颜色变化。

  完整的源代码参见《电子与电脑》网站www.pccomputing.com.cn。

  网页浏览的效果如图1所示,运行环境为IE4.0以上版本。

  (图注WANGYE) 图1

  <HTML>

  <HEAD>

  <TITLE>网页中的下拉菜单</TITLE>

  </HEAD>

  <SCRIPT LANGUAGE="JavaScript" >

  var IsDroped =false;

  function mouseout()

  {

   window.event.srcElement.style.color = 'white';//鼠标移开时置为白色

  }

  function mouseover()

  {

   window.event.srcElement.style.color = 'red';//鼠标进入时置为红色//鼠标进入时置为红色

  }

  function doMenu(MenuID)