- 浏览: 7040097 次
- 性别:
- 来自: 上海
最新评论
-
autosuggestion:
实现一个智能提示功能需要JavaScript、ajax、数据库 ...
自动提示结果 -
岁月之眸:
...
Java读TXT文件 -
yujian58:
写的好。
在线客服技术方案 -
QQ1067184821:
你好,能不能发个完整的给我呢?1067184821@qq.co ...
Extjs3.2+Json lib动态树与GridPanel简单展现 -
chenhua0725:
能不能发一个完成的包给我呢,谢谢了,83667664@qq.c ...
Extjs3.2+Json lib动态树与GridPanel简单展现
我们就可以开始在网页中制作下拉菜单了。我们在网页的顶部放置一个区域,用于显示主菜单条,每一个主菜单条作为一个超链接横向置于该区域中,当然除非菜单项没有子菜单,一般情况下这里的超链接不指向任何地址,只用它来激活子菜单。区域的格式见程序1。
CODE: <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。
CODE: <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,并计算子菜单显示的位置,包括左上角和右下角坐标。然后执行下列语句来显示子菜单所在区域:
CODE: 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
CODE: <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)
{
var CurMenu = document.all(MenuID);
//为避免闪烁,如果下拉菜单已经显示则不重画.
if (IsDroped==true)
{
window.event.cancelBubble = true;
return false;
}
window.event.cancelBubble = true;
TempMenu = CurMenu;
//计算下拉菜单的位置
x = window.event.srcElement.offsetLeft + window.event.srcElement.offsetParent.offsetLeft;
x2 = x + window.event.srcElement.offsetWidth;
y = pad.offsetHeight;
CurMenu.style.top = y;
CurMenu.style.left = x;
CurMenu.style.clip = "rect(0 0 0 0)";
CurMenu.style.display = "block";
//延时2毫秒后再显示菜单,保证ToolbarMenu.offsetHeight有值,避免从主菜单移向下拉菜单时下拉菜单消失.
window.setTimeout("showMenu()", 2);
return true;
}
function showMenu()
{
y2 = y + TempMenu.offsetHeight;
TempMenu.style.clip = "rect(auto auto auto auto)";
IsDroped =true;//下拉菜单已经显示
}
function hideMenu()
{
//如果在下拉菜单的范围之内移动则不隐藏.
cY = event.clientY + document.body.scrollTop;
if (cY>=y && cY<y2 && event.clientX >= (x+5) && event.clientX <= x2 ||
cY>1 && cY<y && event.clientX >= (x+5) && event.clientX <= x2-10)
{ window.event.cancelBubble = true; return;}
//隐藏
TempMenu.style.display = "none";
window.event.cancelBubble = true;
IsDroped =false;
}
</SCRIPT>
<body topmargin=0 leftmargin=0 marginheight=0 marginwidth=0>
<DIV ID='menu' STYLE='position:absolute;background-color:white;width:100%;top:0;left:0;'>
<DIV ID='pad' STYLE='position:relative;height:20;width:100%;font:bold 11pt 宋体;background-color:#007FFF;color:white;'>
<A TARGET='_top' TITLE='' ID='pad1'
onmouseout="mouseout(); hideMenu();" onmouseover="mouseover(); doMenu('idpad1');">
菜单项一
</A>
<SPAN style="color:white"> </SPAN>
<A TARGET='_top' TITLE='' ID='pad2'
onmouseout="mouseout(); hideMenu();" onmouseover="mouseover(); doMenu('idpad2');"
onclick="window.event.returnValue=false;">
菜单项二
</A>
</DIV>
</DIV>
<SPAN ID='idpad1' STYLE='display:none;position:absolute;width:140;background-color:#007FFF;padding-top:0;padding-left:0;padding-bottom:20;z-index:9;'
onmouseout='hideMenu();'>
<HR STYLE='position:absolute;left:0;top:0;color:white' SIZE=1>
<DIV STYLE='position:relative;left:0;top:8;'>
<A ID='pad1' STYLE='text-decoration:none;cursor:hand;font:bold 11pt 宋体;color:white'
HREF='11.htm' TARGET='_top'
onmouseout="mouseout();" onmouseover="mouseover()">
子菜单项一一
</A><BR>
<A ID='pad1' STYLE='text-decoration:none;cursor:hand;font:bold 11pt 宋体;color:white'
HREF='12.htm' TARGET='_top'
onmouseout="mouseout();" onmouseover="mouseover()">
子菜单项一二
</A><BR>
<A ID='pad1' STYLE='text-decoration:none;cursor:hand;font:bold 11pt 宋体;color:white'
HREF='13.htm' TARGET='_top'
onmouseout="mouseout();" onmouseover="mouseover()">
子菜单项一三
</A>
</DIV>
</SPAN>
<SPAN ID='idpad2' STYLE='display:none;position:absolute;width:140;background-color:#007FFF;padding-top:0;padding-left:0;padding-bottom:20;z-index:9;' onmouseout='hideMenu();'>
<HR STYLE='position:absolute;left:0;top:0;color:white' SIZE=1>
<DIV STYLE='position:relative;left:0;top:8;'>
<A ID='pad2' STYLE='text-decoration:none;cursor:hand;font:bold 11pt 宋体;color:white'
HREF='21.htm' TARGET='_top'
onmouseout="mouseout();" onmouseover="mouseover()">
子菜单项二一</A><BR>
<A ID='pad2' STYLE='text-decoration:none;cursor:hand;font:bold 11pt 宋体;color:white'
HREF='22.htm' TARGET='_top'
onmouseout="mouseout();" onmouseover="mouseover()">
子菜单项二二</A><BR>
<A ID='pad2' STYLE='text-decoration:none;cursor:hand;font:bold 11pt 宋体;color:white'
HREF='23.htm' TARGET='_top'
onmouseot="mouseout();" onmouseover="mouseover()">
子菜单项二三</A><BR>
<HR STYLE='color:white' SIZE=1><!--分隔行-->
<A ID='pad2' STYLE='text-decoration:none;cursor:hand;font:bold 11pt 宋体;color:white'
onclick="parent.close()"
onmouseout="mouseout();" onmouseover="mouseover()">
退出系统</A>
</DIV>
</SPAN>
<!--页面的其它内容-->
</BODY>
</HTML>
发表评论
-
jQuery+Ajax+PHP+Mysql实现分页显示数据
2013-09-09 15:54 2859jQuery+Ajax+PHP+Mysql实现分页显示数 ... -
Tab页界面,用jQuery及Ajax技术实现
2009-09-19 18:06 1795从桌面开发的时代开始,Tab页就是一个优异的界面布局形式,兼有 ... -
自动提示结果
2008-12-05 14:39 1142自动提示结果,仿google搜索框提示 http://ww ... -
visibility和display区别
2008-12-05 19:55 905它们都可以实现对域的隐藏,但visibility要占用域的空间 ... -
可放在网页旁边的导航菜单,点击向右边展开
2008-12-05 20:04 1256<iframe name="google_ad ... -
图片加载loading...
2008-12-06 10:39 1180<iframe name="google_ad ... -
iframe加载loading...
2008-12-06 10:40 1178<body> <div id="l ... -
发一个选项卡动态增删的效果..
2008-12-06 13:16 1073发一个选项卡动态增删的效果.. 仿126的效果,可以删除的ta ... -
复选框问题,将选定的值在textarea显示
2008-12-07 02:12 1149<iframe name="google_ ... -
表格复选和复选变色效果
2008-12-07 02:13 734<style type="text/c ... -
表格数据排序
2008-12-07 02:14 990<STYLE type=text/css>TA ... -
检测密码强度
2008-12-07 02:15 916<!DOCTYPE html PUBLIC &quo ... -
CNL Tree Menu Ver1.02无限级树形菜by CNLei枫岩
2008-12-07 02:15 1183<!DOCTYPE html PUBLIC &quo ... -
点击按钮,实现复制网址的代码
2008-12-07 02:19 1906<iframe name="google_ ... -
完全去除页面滚动条的方法
2008-12-07 02:21 1708今天做站的时候客户要求实现网站全屏,使用JavaScript: ... -
支持IE和火狐浏览器的加入收藏夹js代码
2008-12-07 20:01 2942支持IE和火狐浏览器的加入收藏夹js代码 如果想要在opera ... -
javascript实现换皮肤的一种思路
2008-12-07 20:11 895难点在于document.write输出html语句结构用法。 ... -
yiu简易网页调色板功能调用代码
2008-12-08 10:13 980简易网页调色板功能调用代码 colorSelect('色值 ... -
table排序类,点击第一行标题可以排序
2008-12-08 10:20 1458table排序类,点击第一行标题可以排序 <!DO ... -
表格隔行换色+鼠标经过变色(ie6,ie7,ff)
2008-12-08 10:21 1133<!DOCTYPE html PUBLIC " ...
相关推荐
"基于CSS JavaScript的网页下拉菜单的设计与研究" 本文主要讨论如何使用CSS、JavaScript和DIV标签来设计和实现网页下拉菜单。下拉菜单是网页导航菜单的一种重要形式,能够使网页内容和样式分离,提高网页的可读性和...
网页下拉菜单是网页设计中常见的一种交互元素,它能够有效地组织和展示大量链接或功能,提高用户体验。本文将详细探讨三种实现网页下拉菜单的方法:HTML+CSS、JavaScript(原生JS)以及jQuery。 首先,HTML+CSS实现...
JavaScript四级级联下拉菜单是一种常见的网页交互设计,它允许用户在多个下拉菜单中进行选择,逐级筛选出最终的选项。这种设计通常用于表示层次结构的数据,如国家、省份、城市和区域等地理信息,也可以应用于其他...
当我们谈论“Javascript实现的日期下拉菜单”时,我们通常是指利用JavaScript来创建一个用户可以选择特定日期的界面元素,这种交互方式常见于表单提交或者事件预订等场景。下面将详细介绍如何使用JavaScript来实现...
JavaScript在弹出式下拉菜单中的主要任务是控制菜单的显示与隐藏。这通常通过监听用户的鼠标事件来实现,例如悬停(hover)或点击(click)。当用户将鼠标移到特定元素上时,JavaScript会显示下拉菜单;当鼠标离开该...
以下是关于JavaScript下拉菜单的一些关键知识点: 1. HTML结构:下拉菜单的基础结构通常由`<select>`标签构建,其中包含一系列`<option>`标签来定义菜单项。然而,为了实现更复杂的交互和自定义样式,开发者通常会...
这种下拉菜单在网页设计中非常常见,它不仅可以节省页面空间,还能提供更好的用户体验。通过本文的学习,你将能够理解并掌握基本的下拉菜单实现方法,并可以在此基础上进行扩展。 #### 二、HTML结构 首先,我们来看...
在网页设计中,下拉菜单是一种常见的交互元素,它能够有效地组织和展示大量的导航选项,同时节省页面空间。本文将详细讲解如何使用JavaScript和jQuery来实现一个带有缓慢弹出特效的下拉菜单。 首先,我们需要了解...
在网页设计中,下拉菜单常用于网站导航,使用户能够轻松访问多层次的页面结构,而无需占用太多屏幕空间。这种菜单主要由JavaScript编程实现,通过动态改变DOM(Document Object Model)来控制菜单的显示和隐藏,提高...
在网页设计中,下拉菜单是一个常见的元素,它能够有效地组织和展示大量链接,提高用户体验。本文将深入探讨如何使用JavaScript创建一个实用且响应式的下拉菜单。 首先,我们需要了解下拉菜单的基本结构。一个下拉...
在网页设计中,下拉菜单是一...总之,理解和掌握CSS与JavaScript在下拉菜单中的应用,不仅有助于提升网页的用户体验,也是网页开发人员必备的技能之一。通过不断地实践和学习,可以创造出更多富有创意的下拉菜单效果。
JavaScript下拉菜单是一种常见的网页交互元素,用于提供多级导航选项,提高用户界面的可用性和效率。在网页设计中,JavaScript常被用来实现动态效果,如下拉菜单,因为HTML和CSS本身无法实现复杂的交互性。 这个名...
css和javascript编写的 横向下拉菜单,有益于学习网页制作
在网页设计中,创建交互式的下拉菜单是一个常见的需求,特别是在构建导航栏时。本项目“html+css+JavaScript实现淡入淡出下拉菜单”就是针对这一需求的一个实例,旨在帮助初学者理解如何结合HTML、CSS和JavaScript来...
下拉菜单在网页设计和应用程序开发中是一种常见的交互元素,用于提供多个选择项,并通过点击主菜单项展开显示。在本资源包“下拉菜单集合”中,包含了多种类型的下拉菜单,包括二级和三级下拉菜单,这些设计通常用于...
JavaScript 自定义多级联动下拉菜单
通过以上的步骤,我们就实现了一个基本的纯JavaScript下拉菜单插件,同时处理了兼容性问题。然而,实际项目中可能还需要进一步优化,比如添加动画效果、防止快速点击时的闪烁现象等。这个简单的例子展示了如何利用...
在多级下拉菜单中,我们需要遍历DOM树,找到特定的菜单元素,并根据用户交互添加或移除样式,显示或隐藏子菜单。 2. **事件处理**:JavaScript事件是用户或浏览器执行的特定动作,如鼠标点击或页面加载。我们可以...
网页设计中的下拉菜单可以使用多种方法来实现,包括使用HTML语言、JavaScript语言和Dreamweaver等工具。下面是使用HTML语言和JavaScript语言来实现下拉菜单的示例代码: 首先,使用HTML语言可以使用标记来创建一个...
在网页设计与开发领域中,下拉菜单是一种非常实用且常见的导航组件。它不仅能够节省页面空间,还能帮助用户更高效地找到所需的信息或功能。本篇文章将深入探讨一种经典的下拉菜单实现方法,并通过具体的代码示例来...