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 相关文章推荐
javascript中获取选中对象的类型
Apr 02 Javascript
javascript 触发HTML元素绑定的函数
Sep 11 Javascript
javascript Window及document对象详细整理
Jan 12 Javascript
extjs 时间范围选择自动判断的实现代码
Jun 24 Javascript
快速学习jQuery插件 Cookie插件使用方法
Dec 01 Javascript
不得不分享的JavaScript常用方法函数集(下)
Dec 25 Javascript
详解javascript跨浏览器事件处理程序
Mar 27 Javascript
AngularJS基础 ng-keypress 指令简单示例
Aug 02 Javascript
真正好用的js验证上传文件大小的简单方法
Oct 27 Javascript
AngularJS用户选择器指令实例分析
Nov 04 Javascript
Vue实现简易翻页效果源码分享
Nov 08 Javascript
JQuery常用简单动画操作方法回顾与总结
Dec 07 jQuery
推荐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
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
php实现webservice实例
2014/11/06 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
JS随即打乱数组实现代码
2012/12/03 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
vue-cli+webpack记事本项目创建
2017/04/01 Javascript
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
详解React 条件渲染
2020/07/08 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
Python 迭代器与生成器实例详解
2017/05/18 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
Python OS模块实例详解
2019/04/15 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
*p++ 自增p 还是p所指向的变量
2016/07/16 面试题
广州迈达威.net面试题目
2012/03/10 面试题
英语系毕业生自荐信
2013/10/31 职场文书
一年级班主任寄语
2014/01/19 职场文书
中标通知书格式
2015/04/17 职场文书
代理词怎么写
2015/05/25 职场文书
公司与个人合作协议书
2016/03/19 职场文书
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫