JavaScript实现向右展开的多级菜单

作者:纸飞机时间:2026-10-29 14:20:02浏览:634

本文介绍一种使用JavaScript实现的多级网页菜单效果。当鼠标悬停在左侧主菜单时,右侧会自动展开二级菜单。该示例代码结构简洁,未进行复杂美化,适合初学者参考学习,旨在提供基础的功能实现逻辑。

JavaScript实现向右展开的多级菜单

本文通过具体实例展示如何利用JavaScript实现向右展开的多级网页菜单功能,供读者参考借鉴。

该方案利用JavaScript实现向右展开的多级菜单交互:当鼠标悬停在左侧主菜单区域时,右侧会动态展开二级菜单。代码风格较为朴素,未做深度美化,由新手编写,欢迎指正,其中仍有较多可优化之处。

运行效果截图如下:

JavaScript实现向右展开的多级菜单

在线演示地址如下:

http://demo.jb51.net/js/2015/js-right-show-web-menu-codes/

具体代码如下:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">      
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>向右伸出的多级菜单</title>
<style type="text/css">
*{
padding:0;
margin:0;
}
li{
list-style:none;
}
ul{
background:rgb(200,13,34);
width:250px;
float:left;
}
b{
display:block;
width:500px;
height:40px;
background:rgb(24,122,173);
}
ul li{
height:32px;
}
ul li:hover{
height:32px;
background:orange;
}
#nav1{
position:absolute;
}
#nav3{
position:relative;
left:0;
background:green;
visibility:hidden;
} 
</style>
</head>
<body>
  <div id="nav1">
   <ul id="nav2">
    <li>文学</li>
    <li>艺术</li>
    <li>摄影</li>
   </ul>
   <ul id="nav3">
    <li>1-1</li>
    <li>2-1</li>
    <li>3-1</li>
   </ul>
  </div>
<script type="text/javascript">
 var focus=false;
 var showdiv=document.getElementById("nav3");
 showdiv.onmouseover=function(){
  focus=true;
   this.style.visibility="visible";
 }
  showdiv.onmouseout=function(){
  focus=false;
  this.style.visibility="hidden";
 }
function bindToggle(index,flag){
  var showdiv= document.getElementById("nav3");
  var delayshow= function(){
  if(flag ==1 ){
   showdiv.style.visibility="visible";
   showdiv.style.top=index*32+"px";
  }else {
  if(!focus){
   showdiv.style.visibility="hidden";
  }  
  }
 }
 return function(){ 
 setTimeout(delayshow,150);
 } 
}
 var menu=document.getElementById("nav2").childNodes;
 var index=0;
 for(var i=0;i<menu.length;i++){
 if(1==menu[i].nodeType){
  menu[i].onmouseover= bindToggle.call(menu[i],index,1);
  menu[i].onmouseout= bindToggle.call(menu[i],index,0);
   index++;
 }  
 } 
</script>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

作者最新文章