JavaScript实现下拉菜单的显示和隐藏


Posted in Javascript onJanuary 05, 2016

我们这一篇来用JavaScript脚本实现下拉菜单的显示和隐藏。使用JavaScript方法实现我们需要用的知识有:
1)JS事件:onmouseover鼠标经过事件和onmouseout鼠标离开事件。
2)JS基础语法:使用function关键字定义函数。
3)DOM编程:getElementsByTagName()方法。
那么接下来就是我们制作的流程:
1)隐藏二级菜单:设置CSS样式,让二级菜单隐藏。
2)编写显示子菜单showsub()函数:使用getElementsByTagName获取二级菜单项;通过style.display设置二级菜单显示。
3)编写隐藏子菜单hidesub()函数:使用getElementsByTagName获取二级菜单项;通过style.display设置二级菜单隐藏。
4)添加鼠标事件:给有二级菜单的一级菜单添加鼠标事件,并调用showsub()/hidesub()函数,实现鼠标经过一级菜单,二级菜单显示和隐藏。
5)做浏览器兼容性检测,至少五个浏览器。IE7,8,9,火狐,谷歌,2345浏览器等。

效果图:

JavaScript实现下拉菜单的显示和隐藏

HTML代码:

<span style="font-size:18px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>下拉菜单</title> 
<!--引入的外部CSS样式文件--> 
<link rel="stylesheet" type="text/css" href="style.css" /> 
<!--引入的外部JS脚本文件--> 
<script type="text/javascript" src="script.js"></script> 
</head> 
 
<body> 
<div id="nav" class="nav"> 
 <ul> 
  <li><a href="#">网站首页</a></li> 
  <li onmouseover="showsub(this)" onmouseout="hidesub(this)"><a href="#">课程大厅</a> 
  <ul> 
   <li><a href="#">JavaScript</a></li> 
   <li><a href="#">jQuery</a></li> 
   <li><a href="#">Ajax</a></li> 
  </ul> 
  </li> 
  <li onmouseover="showsub(this)" onmouseout="hidesub(this)"><a href="#">学习中心</a> 
  <ul> 
   <li><a href="#">视频学习</a></li> 
   <li><a href="#">案例学习</a></li> 
   <li><a href="#">交流平台</a></li> 
  </ul> 
  </li> 
  <li><a href="#">经典案例</a></li> 
  <li><a href="#">关于我们</a></li> 
 </ul> 
</div> 
</body> 
</html> 
</span>

外部CSS样式表style.css文件代码:

<span style="font-size:18px;">/*CSS全局设置*/ 
*{ 
 margin:0; 
 padding:0; 
} 
.nav{ 
 background-color:#EEEEEE; 
 height:40px; 
 width:450px; 
 margin:0 auto; 
} 
ul{ 
 list-style:none; 
} 
ul li{ 
 float:left; 
 line-height:40px; 
 text-align:center; 
} 
a{ 
 text-decoration:none; 
 color:#000000; 
 display:block; 
 width:90px; 
 height:40px; 
} 
a:hover{ 
 background-color:#666666; 
 color:#FFFFFF; 
} 
ul li ul li{ 
 float:none; 
 background-color:#EEEEEE; 
} 
ul li ul{ 
 display:none; 
} 
/*为了兼容IE7设置的CSS样式,但是又必须写在a:hover前面*/ 
ul li ul li a:link,ul li ul li a:visited{ 
 background-color:#EEEEEE; 
} 
ul li ul li a:hover{ 
 background-color:#009933; 
} 
</span>

外部JS脚本script.js文件代码:

<span style="font-size:18px;">function showsub(li){ 
 var submenu=li.getElementsByTagName("ul")[0]; 
 submenu.style.display="block"; 
} 
function hidesub(li){ 
 var submenu=li.getElementsByTagName("ul")[0]; 
 submenu.style.display="none"; 
}</span>

以上就是本文的全部内容,希望对大家的学习有所帮助,实现下拉菜单效果。

Javascript 相关文章推荐
每天一篇javascript学习小结(RegExp对象)
Nov 17 Javascript
vuejs如何配置less
Apr 25 Javascript
jQuery实现简单日期格式化功能示例
Sep 19 jQuery
vue生成随机验证码的示例代码
Sep 29 Javascript
Vue实现PopupWindow组件详解
Apr 28 Javascript
详解Chart.js轻量级图表库的使用经验
May 22 Javascript
浅谈Vue初学之props的驼峰命名
Jul 19 Javascript
浅谈开发eslint规则
Oct 01 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
Mar 26 Javascript
javascript异步编程的六种方式总结
May 17 Javascript
Vue数据双向绑定底层实现原理
Nov 22 Javascript
video.js添加自定义组件的方法
Dec 09 Javascript
jQuery实现二级下拉菜单效果
Jan 05 #Javascript
基于JavaScript实现简单的随机抽奖小程序
Jan 05 #Javascript
jquery中ajax处理跨域的三大方式
Jan 05 #Javascript
基于JavaScript代码实现随机漂浮图片广告
Jan 05 #Javascript
多个js毫秒倒计时同时进行效果
Jan 05 #Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
Jan 04 #Javascript
实例详解jQuery结合GridView控件的使用方法
Jan 04 #Javascript
You might like
php从数组中随机抽取一些元素的代码
2012/11/05 PHP
解析thinkphp中的导入文件标签
2013/06/20 PHP
PHP 循环删除无限分类子节点的实现代码
2013/06/21 PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
2013/06/24 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
jQuery JSON的解析方式分享
2011/04/05 Javascript
jquery学习总结(超级详细)
2014/09/04 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
jQuery实现div拖拽效果实例分析
2016/02/20 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
深入理解jquery跨域请求方法
2016/05/18 Javascript
webpack4之SplitChunksPlugin使用指南
2018/06/12 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
python实现画圆功能
2018/01/25 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
Python使用Chrome插件实现爬虫过程图解
2020/06/09 Python
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
复古斯堪的纳维亚儿童服装:Baby go Retro
2017/09/09 全球购物
警察思想汇报
2014/01/04 职场文书
十佳班主任事迹材料
2014/01/18 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
2014年度党员自我评议
2014/09/13 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
2015年党风廉政承诺书
2015/01/22 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
基于angular实现树形二级表格
2021/10/16 Javascript
【DOTA2】当街暴打?PSG LGD vs VG - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA