JS+CSS相对定位实现的下拉菜单


Posted in Javascript onOctober 06, 2015

本文实例讲述了JS+CSS相对定位实现的下拉菜单。分享给大家供大家参考。具体如下:

这里使用的是相对定位,不过效果还可以,用时候再修整一下,这个只是实现了大概功能,还有许多细节没有修饰。

运行效果截图如下:

JS+CSS相对定位实现的下拉菜单

在线演示地址如下:

具体代码如下:

<html>
<head>
<title>非定位CSS+Js下拉菜单</title>
<style>
#menu {
  position: absolute;
  font-family: sans-serif;
  font-size: 9pt;
}
#menu li {
  float: left;
  list-style-type: none;
  width: 102px;
  background-color: skyblue;
  border: 1px solid #0066cc;
  text-indent: 0px;
  margin-left: 3px;
}
#menu li a {
  color: blue;
  text-decoration: none;
  width: 100%;
  display: block;
}
#menu li a:hover {
  color: white;
}
#menu li ul {
  background-color: skyblue;
  margin: 0px;
  padding: 0px;
}
#menu li ul li {
  padding: 0px;
  margin: 0px;
  float: none;
  list-style-type: none;
  width: 100px;
  text-indent: 0px;
  border: none;
}
#menu li ul li a{
  color: black;
  text-decoration: none;
}
#menu li ul li a:hover{
  color: black;
  background-color: aqua;
}</style>
<script language="javascript" type="text/javascript">
var t=false,current;
function SetupMenu() {
  if (!document.getElementsByTagName) return;
  items=document.getElementsByTagName("li");
  for (i=0; i<items.length; i++) {
   if (items[i].className != "menu") continue;
   thelink=findChild(items[i],"A");
   thelink.onmouseover=ShowMenu;
   thelink.onmouseout=StartTimer;
   if (ul=findChild(items[i],"UL")) {
     ul.style.display="none";
     for (j=0; j<ul.childNodes.length; j++) {
      ul.childNodes[j].onmouseover=ResetTimer;
      ul.childNodes[j].onmouseout=StartTimer;
     }
   }
  } 
}
function findChild(obj,tag) {
  cn = obj.childNodes;
  for (k=0; k<cn.length; k++) {
   if (cn[k].nodeName==tag) return cn[k];
  }
  return false;
}
function ShowMenu(e) {
  if (!e) var e = window.event;
  thislink = (e.target) ? e.target: e.srcElement;
  ResetTimer();
  if (current) HideMenu(current);
  thislink = thislink.parentNode;
  current=thislink;
  ul = findChild(thislink,"UL");
  if (!ul) return;
  ul.style.display="block";
}
function HideMenu(thelink) {
  ul = findChild(thelink,"UL");
  if (!ul) return;
  ul.style.display="none";
}
function ResetTimer() {
  if (t) window.clearTimeout(t);
}
function StartTimer() {
  t = window.setTimeout("HideMenu(current)",200);
}
window.onload=SetupMenu;
</script>
</head>
<body>
<h1>Menu Test</h1>
<ul id="menu">
<li class="menu"><a href="#">Home</a></li>
<li class="menu"><a href="#">Products</a>
  <ul>
  <li><a href="#">Sub-item 1</a></li>
  <li><a href="#">Sub-item 2</a></li>
  </ul>
</li>
<li class="menu"><a href="#">Support</a>
  <ul>
  <li><a href="#">Sub-item 1</a></li>
  <li><a href="#">Sub-item 2</a></li>
  </ul>
</li>
<li class="menu"><a href="#">Employment</a>
  <ul>
  <li><a href="#">Sub-item 1</a></li>
  <li><a href="#">Sub-item 2</a></li>
  </ul>
</li>
<li class="menu"><a href="#">Contact Us</a>
  <ul>
  <li><a href="#">Sub-item 1</a></li>
  <li><a href="#">Sub-item 2</a></li>
  </ul>
</li>
</ul>
</body>
</html>

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

Javascript 相关文章推荐
一些有关检查数据的JS代码
Sep 07 Javascript
使用jQuery判断IE浏览器版本的代码
Jun 14 Javascript
JQuery异步获取返回值中文乱码的解决方法
Jan 29 Javascript
JavaScript中的getMilliseconds()方法使用详解
Jun 10 Javascript
BootStrap便签页的简单应用
Jan 06 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
Sep 28 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
Oct 26 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
Nov 17 Javascript
微信小程序自定义tab实现多层tab嵌套功能
Jun 15 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
Sep 18 Javascript
15分钟深入了解JS继承分类、原理与用法
Jan 19 Javascript
实现高性能javascript的注意事项
May 27 Javascript
推荐10 个很棒的 jQuery 特效代码
Oct 04 #Javascript
javascript日期格式化方法汇总
Oct 04 #Javascript
jQuery插件Timelinr 实现时间轴特效
Oct 04 #Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
Oct 04 #Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
Oct 02 #Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
Oct 02 #Javascript
jQuery网页右侧广告跟随滚动代码分享
Apr 20 #Javascript
You might like
超级简单的发送邮件程序
2006/10/09 PHP
php中的实现trim函数代码
2007/03/19 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
PHP读取大文件的几种方法介绍
2016/10/27 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
将nodejs打包工具整合到鼠标右键的方法
2013/05/11 NodeJs
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
大型JavaScript应用程序架构设计模式
2016/06/29 Javascript
nodejs的HTML分析利器node-jquery用法浅析
2016/11/08 NodeJs
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
详解JavaScript 作用域
2020/07/14 Javascript
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
python奇偶行分开存储实现代码
2018/03/19 Python
python实现LRU热点缓存及原理
2019/10/29 Python
Python3将jpg转为pdf文件的方法示例
2019/12/13 Python
django rest framework 自定义返回方式
2020/07/12 Python
Python csv文件记录流程代码解析
2020/07/16 Python
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
全球最大的中文旅行网站:去哪儿网
2017/11/16 全球购物
个人自我剖析材料
2014/02/07 职场文书
项目经理任命书内容
2014/06/06 职场文书
上课说话检讨书
2015/01/27 职场文书
开平碉楼导游词
2015/02/06 职场文书
公司催款律师函
2015/05/27 职场文书
《大禹治水》教学反思
2016/02/22 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
JavaScript文档对象模型DOM
2021/11/20 Javascript