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等比例缩放图片控制超出范围的图片
Aug 06 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
Jul 10 Javascript
Javascript基础教程之if条件语句
Jan 18 Javascript
javascript中sort()的用法实例分析
Jan 30 Javascript
jquery实现翻动fadeIn显示的方法
Mar 05 Javascript
js与jquery分别实现tab标签页功能的方法
Nov 18 Javascript
基于Angular.js实现的触摸滑动动画实例代码
Feb 19 Javascript
微信小程序表单弹窗实例
Jul 19 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
Jun 04 jQuery
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
Feb 14 Javascript
vue props 单项数据流实例分享
Feb 16 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
Sep 21 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
php注入实例
2006/10/09 PHP
介绍几个array库的新函数 php
2006/12/29 PHP
php使用curl代理实现抓取数据的方法
2017/02/03 PHP
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
2017/12/18 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
Js on及addEventListener原理用法区别解析
2020/07/11 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
python 读取文件并替换字段的实例
2018/07/12 Python
python实现画五角星和螺旋线的示例
2019/01/20 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
关于Numpy中的行向量和列向量详解
2019/11/30 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
2020/07/09 Python
基于python实现坦克大战游戏
2020/10/27 Python
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
2015年高三班主任工作总结
2015/05/21 职场文书