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 相关文章推荐
jquery maxlength使用说明
Sep 09 Javascript
JS代码放在head和body中的区别分析
Dec 01 Javascript
JS判断元素为数字的奇异写法分享
Aug 01 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
May 13 Javascript
简单实现jQuery多选框功能
Jan 09 Javascript
微信小程序 选项卡的简单实例
May 24 Javascript
react router 4.0以上的路由应用详解
Sep 21 Javascript
AngularJS 表单验证手机号的实例(非必填)
Nov 12 Javascript
jQuery实现获取动态添加的标签对象示例
Jun 28 jQuery
node.js监听文件变化的实现方法
Apr 17 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
Jun 10 Javascript
vue2.x数组劫持原理的实现
Apr 19 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
谈一谈收音机的高放电路
2021/03/02 无线电
php中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
JS使用getComputedStyle()方法获取CSS属性值
2014/04/23 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
JS常用知识点整理
2017/01/21 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
如何在Node和浏览器控制台中打印彩色文字
2020/01/09 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
Python md5与sha1加密算法用法分析
2017/07/14 Python
Django中使用CORS实现跨域请求过程解析
2019/08/05 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
h5封装下拉刷新
2020/08/25 HTML / CSS
2014年迎新年活动方案
2014/02/19 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
同意迁入证明模板
2014/10/26 职场文书
房产公证书样本
2015/01/23 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS