由于JavaScript和VBScript脚本语言及CSS的日益流行,Interent上各大网站纷纷采用这些技术,使自己的站点变得更加活跃,更具交互性和趣味性。尤其是微软主页上的那种下拉菜单,曾经让我感到不可思议,简单的网页竟能呈现出类似应用程序般的界面,让我羡慕不已。经过研究,我发现此类菜单的编制并不复杂,下面,我就把我编制的下拉菜单介绍给大家。
首先,我们先要定义几个类(仔细看哟,这里可是影响外观效果的关键部位):
<
TEXTAREA
style
="WIDTH: 447px; HEIGHT: 186px"
rows
=12
cols
=60
>
< STYLE >
.over { background-color : #cccccc ;
//这里定义菜单项鼠标OVER时的效果;
border-top : #ffffff 1px solid ; //上边的属性
border-bottom : #000000 1px solid ; //下边的属性
border-left : #ffffff 1px solid ; //左边的属性
border-right : #000000 1px solid } //右边的属性
.out { background-color : #cccccc ;
//这里定义菜单项一般状态;
border-top : #cccccc 1px solid ;
border-bottom : #cccccc 1px solid ;
border-left : #cccccc 1px solid ;
border-right : #cccccc 1px solid }
.down { background-color : #cccccc ;
//这里定义菜单项鼠标左键点击时的效果;
border-top : #000000 1px solid ;
border-bottom : #ffffff 1px solid ;
border-left : #000000 1px solid ;
border-right : #ffffff 1px solid }
.subover { background-color : #003090 ; color : #ffffff }
//这里定义子菜单鼠标OVER时的效果;
.subout { background-color : #cccccc }
//这里定义子菜单一般状态;
</ STYLE >
//请把以上代码加到 < HEAD ></ HEAD > 里面。
定义完CSS风格,下面我们把它和HTML合并到一起:
< table width ="100%" border ="0" cellspacing ="0" cellpadding ="0" align ="center" class ="over" height ="22" >< tr >
< td width ="9%" height ="19" >
< table id ="bar0" //定义“文件”菜单项的ID;
onmousedown ="mydown(" bar0");"
//定义“文件”菜单项的鼠标事件;
onMouseOver ="myover(" bar0");"
onMouseOut ="myout(" bar0");"
onclick ="myclick(" bar0");"
class ="out" //定义“文件”菜单项的类;
width ="100%" border ="0" cellspacing ="0" cellpadding ="0" bgcolor ="#cccccc" >< tr >< td colspan ="2" height ="19" >< div align ="center" > 文件 </ div ></ td ></ tr ></ table >
//“文件”菜单项定义结束;
</ td >
< td width ="9%" height ="19" > //定义第二个菜单项;
< table id ="bar1" onmousedown ="mydown(" bar1");" class ="out"
width ="100%" border ="0" cellspacing ="0"
cellpadding ="0" bgcolor ="#cccccc"
onMouseOver ="myover(" bar1");"
onMouseOut ="myout(" bar1");"
onclick ="myclick(" bar1");" >
< tr >< td colspan ="2" height ="19" >< div align ="center" > 编辑 </ div ></ td ></ tr >
</ table > //第二个菜单项定义结束;
</ td > //定义第N个菜单项,方法同上;
</ tr >
</ table >
下面是子菜单的定义;
< div id ="menu0" //定义子菜单1的位置并隐藏;
style ="POSITION: absolute;LEFT: 6px; TOP: 22px; Z-INDEX: 12;
width: 100px; height: 50px;display:none" >
< table class ="over" width ="100%" border ="0" >< tr >
< td id ="00" onmouseover ="myover(" 00");"
onmouseout ="myout(" 00");"
onclick ="myclick(" 想打开的文件0.htm");" > 菜单项00 </ td >
</ tr >< tr >
< td id ="01" onmouseover ="myover(" 01");"
onmouseout ="myout(" 01");"
onclick ="myclick(" 想打开的文件1.htm');" > 菜单项01 </ td >
</ tr ></ table >
</ div >
< div id ="menu1" //定义子菜单2的位置并隐藏;
style ="POSITION: absolute;LEFT: 66px; TOP: 22px; Z-INDEX: 12;
width: 100px; height: 50px;display:none" >
< table class ="over" width ="100%" border ="0" >< tr >
< td id ="10" onmouseover ="myover(" 10");"
onmouseout ="myout(" 10");"
onclick ="myclick(" 想打开的文件2.htm");" > 菜单项10 </ td >
</ tr >< tr >
< td id ="11" onmouseover ="myover(" 11");"
onmouseout ="myout(" 11");"
onclick ="myclick(" 想打开的文件3.htm");" > 菜单项11 </ td >
</ tr >
</ table >
</ div >
哇!HTML代码也编写完了,把它们添加到你的 < BODY ></ BODY > 中吧,现在,我们将进行代码的核心部分:
“脚本”的编制!
< SCRIPT >
function myover(tt)
// 菜单项及子菜单的鼠标OVER例程;
{ cc = document.all(tt);
if ( ! tt.indexOf( " bar " ))
{ cc.className = " over " ;
}
else {cc.className = " subover " ;}
event.srcElement.style.cursor = " default " ;
}
function myout(tt){
// 菜单项及子菜单的鼠标OUT例程;
cc = document.all(tt);
if (tt.indexOf( " bar " ) == " 0 " )
{ cc.className = " out " ;
}
else {cc.className = " subout " ;}
event.srcElement.style.cursor = " auto " ;
}
function mydown(tt){ // 菜单项的鼠标DOWN例程;
cc = document.all(tt);
cc.className = " down " ;
}
function myclick(tt)
// 菜单项及子菜单的鼠标CLICK例程;
{ if (tt.indexOf( " bar " ) == " 0 " )
{ hideall();
var src = document.all(tt);
if (src.id == " bar0 " ) menu0.style.display = " " ;
else if (src.id == " bar1 " )
menu1.style.display = "" ;
else if (src.id == " bar2 " )
menu2.style.display = " " ;
else if (src.id == " bar3 " )
menu3.style.display = " " ;
}
else {location.href = tt;}
window.event.cancelBubble = true ;
// 终结本事件冒泡
}
function hideall()
{
menu0.style.display = " none " ;
menu1.style.display = " none " ;
menu2.style.display = " none " ;
menu3.style.display = " none " ;
}
function renclick(){
hideall(); // 隐藏所有菜单
}
document.onmouseup = renclick;
</ SCRIPT >
把上面的脚本添加到你的页面的 < HEAD ></ HEAD > 中。
</ TEXTAREA >
< STYLE >
.over { background-color : #cccccc ;
//这里定义菜单项鼠标OVER时的效果;
border-top : #ffffff 1px solid ; //上边的属性
border-bottom : #000000 1px solid ; //下边的属性
border-left : #ffffff 1px solid ; //左边的属性
border-right : #000000 1px solid } //右边的属性
.out { background-color : #cccccc ;
//这里定义菜单项一般状态;
border-top : #cccccc 1px solid ;
border-bottom : #cccccc 1px solid ;
border-left : #cccccc 1px solid ;
border-right : #cccccc 1px solid }
.down { background-color : #cccccc ;
//这里定义菜单项鼠标左键点击时的效果;
border-top : #000000 1px solid ;
border-bottom : #ffffff 1px solid ;
border-left : #000000 1px solid ;
border-right : #ffffff 1px solid }
.subover { background-color : #003090 ; color : #ffffff }
//这里定义子菜单鼠标OVER时的效果;
.subout { background-color : #cccccc }
//这里定义子菜单一般状态;
</ STYLE >
//请把以上代码加到 < HEAD ></ HEAD > 里面。
定义完CSS风格,下面我们把它和HTML合并到一起:
< table width ="100%" border ="0" cellspacing ="0" cellpadding ="0" align ="center" class ="over" height ="22" >< tr >
< td width ="9%" height ="19" >
< table id ="bar0" //定义“文件”菜单项的ID;
onmousedown ="mydown(" bar0");"
//定义“文件”菜单项的鼠标事件;
onMouseOver ="myover(" bar0");"
onMouseOut ="myout(" bar0");"
onclick ="myclick(" bar0");"
class ="out" //定义“文件”菜单项的类;
width ="100%" border ="0" cellspacing ="0" cellpadding ="0" bgcolor ="#cccccc" >< tr >< td colspan ="2" height ="19" >< div align ="center" > 文件 </ div ></ td ></ tr ></ table >
//“文件”菜单项定义结束;
</ td >
< td width ="9%" height ="19" > //定义第二个菜单项;
< table id ="bar1" onmousedown ="mydown(" bar1");" class ="out"
width ="100%" border ="0" cellspacing ="0"
cellpadding ="0" bgcolor ="#cccccc"
onMouseOver ="myover(" bar1");"
onMouseOut ="myout(" bar1");"
onclick ="myclick(" bar1");" >
< tr >< td colspan ="2" height ="19" >< div align ="center" > 编辑 </ div ></ td ></ tr >
</ table > //第二个菜单项定义结束;
</ td > //定义第N个菜单项,方法同上;
</ tr >
</ table >
下面是子菜单的定义;
< div id ="menu0" //定义子菜单1的位置并隐藏;
style ="POSITION: absolute;LEFT: 6px; TOP: 22px; Z-INDEX: 12;
width: 100px; height: 50px;display:none" >
< table class ="over" width ="100%" border ="0" >< tr >
< td id ="00" onmouseover ="myover(" 00");"
onmouseout ="myout(" 00");"
onclick ="myclick(" 想打开的文件0.htm");" > 菜单项00 </ td >
</ tr >< tr >
< td id ="01" onmouseover ="myover(" 01");"
onmouseout ="myout(" 01");"
onclick ="myclick(" 想打开的文件1.htm');" > 菜单项01 </ td >
</ tr ></ table >
</ div >
< div id ="menu1" //定义子菜单2的位置并隐藏;
style ="POSITION: absolute;LEFT: 66px; TOP: 22px; Z-INDEX: 12;
width: 100px; height: 50px;display:none" >
< table class ="over" width ="100%" border ="0" >< tr >
< td id ="10" onmouseover ="myover(" 10");"
onmouseout ="myout(" 10");"
onclick ="myclick(" 想打开的文件2.htm");" > 菜单项10 </ td >
</ tr >< tr >
< td id ="11" onmouseover ="myover(" 11");"
onmouseout ="myout(" 11");"
onclick ="myclick(" 想打开的文件3.htm");" > 菜单项11 </ td >
</ tr >
</ table >
</ div >
哇!HTML代码也编写完了,把它们添加到你的 < BODY ></ BODY > 中吧,现在,我们将进行代码的核心部分:
“脚本”的编制!
< SCRIPT >
function myover(tt)
// 菜单项及子菜单的鼠标OVER例程;
{ cc = document.all(tt);
if ( ! tt.indexOf( " bar " ))
{ cc.className = " over " ;
}
else {cc.className = " subover " ;}
event.srcElement.style.cursor = " default " ;
}
function myout(tt){
// 菜单项及子菜单的鼠标OUT例程;
cc = document.all(tt);
if (tt.indexOf( " bar " ) == " 0 " )
{ cc.className = " out " ;
}
else {cc.className = " subout " ;}
event.srcElement.style.cursor = " auto " ;
}
function mydown(tt){ // 菜单项的鼠标DOWN例程;
cc = document.all(tt);
cc.className = " down " ;
}
function myclick(tt)
// 菜单项及子菜单的鼠标CLICK例程;
{ if (tt.indexOf( " bar " ) == " 0 " )
{ hideall();
var src = document.all(tt);
if (src.id == " bar0 " ) menu0.style.display = " " ;
else if (src.id == " bar1 " )
menu1.style.display = "" ;
else if (src.id == " bar2 " )
menu2.style.display = " " ;
else if (src.id == " bar3 " )
menu3.style.display = " " ;
}
else {location.href = tt;}
window.event.cancelBubble = true ;
// 终结本事件冒泡
}
function hideall()
{
menu0.style.display = " none " ;
menu1.style.display = " none " ;
menu2.style.display = " none " ;
menu3.style.display = " none " ;
}
function renclick(){
hideall(); // 隐藏所有菜单
}
document.onmouseup = renclick;
</ SCRIPT >
把上面的脚本添加到你的页面的 < HEAD ></ HEAD > 中。
</ TEXTAREA >