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滚动条回到顶部的代码
Dec 06 Javascript
基于dom编程中 动态创建与删除元素的使用
Apr 17 Javascript
js函数参数设置默认值的一种变通实现方法
May 26 Javascript
jQuery的ready方法详解
Nov 27 Javascript
js给网页加上背景音乐及选择音效的方法
Mar 03 Javascript
详解js跨域原理以及2种解决方案
Dec 09 Javascript
js正则表达式replace替换变量方法
May 21 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
Sep 27 Javascript
Node.js测试中的Mock文件系统详解
Nov 21 Javascript
jquery+ajax实现省市区三级联动效果简单示例
Jan 04 Javascript
微信小程序公用参数与公用方法用法示例
Jan 09 Javascript
js Math数学简单使用操作示例
Mar 13 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
example2.php
2006/10/09 PHP
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
解析csv数据导入mysql的方法
2013/07/01 PHP
利用PHP命令行模式采集股票趋势信息
2016/08/09 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
Chosen 基于jquery的选择框插件使用方法
2012/05/30 Javascript
jquery高效反选具体实现
2013/05/05 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
分享JavaScript监听全部Ajax请求事件的方法
2016/08/28 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
nodejs的压缩文件模块archiver用法示例
2017/01/18 NodeJs
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
vue iView 上传组件之手动上传功能
2018/03/16 Javascript
vuex 项目结构目录及一些简单配置介绍
2018/04/08 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
python中as用法实例分析
2015/04/30 Python
python获取文件扩展名的方法
2015/07/06 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
银行求职推荐信范文
2013/11/30 职场文书
前台接待岗位职责
2013/12/03 职场文书
大学生旷课检讨书
2014/01/22 职场文书
同意转租证明
2015/06/24 职场文书
趣味运动会加油词
2015/07/18 职场文书
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
spring cloud eureka 服务启动失败的原因分析及解决方法
2022/03/17 Java/Android