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 27 Javascript
javascript下阻止表单重复提交、防刷新、防后退
Aug 17 Javascript
Javascript中call的两种用法实例
Dec 13 Javascript
javascript闭包传参和事件的循环绑定示例探讨
Apr 17 Javascript
uploadify多文件上传参数设置技巧
Nov 16 Javascript
JS作为值的函数用法示例
Jun 20 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
Sep 05 Javascript
vue中七牛插件使用的实例代码
Jul 28 Javascript
详解Vuex中mapState的具体用法
Sep 28 Javascript
Vue Router中应用中间件的方法
Aug 06 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 Vue.js
vue封装数字翻牌器
Apr 20 Vue.js
推荐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
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
JavaScript加强之自定义callback示例
2013/09/21 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
如何使用HTML5地理位置定位功能
2015/04/27 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
探究JavaScript中的五种事件处理程序方式
2016/12/07 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
详解js前端代码异常监控
2017/01/11 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
Python类的基础入门知识
2008/11/24 Python
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
Python中static相关知识小结
2018/01/02 Python
Python登录系统界面实现详解
2019/06/25 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
python中xlutils库用法浅析
2020/12/29 Python
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
2014年母亲节寄语
2014/05/07 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
高中班级口号
2014/06/09 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
医护人员继续教育学习心得体会
2016/01/19 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书