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 相关文章推荐
封装好的省市地区联动控件附下载
Aug 13 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
Jun 07 Javascript
jquery.tmpl JQuery模板插件
Oct 10 Javascript
js+xml生成级联下拉框代码
Jul 24 Javascript
js文件缓存之版本管理详解
Jul 05 Javascript
JQuery结合CSS操作打印样式的方法
Dec 24 Javascript
Linux下编译安装php libevent扩展实例
Feb 14 Javascript
js删除数组元素、清空数组的简单方法(必看)
Jul 27 Javascript
原生js实现tab选项卡切换
Mar 23 Javascript
基于vue.js路由参数的实例讲解——简单易懂
Sep 07 Javascript
微信小程序实现之手势锁功能实例代码
Jul 19 Javascript
详解vue父子组件状态同步的最佳方式
Sep 10 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
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
html静态页面调用php文件的方法
2014/11/13 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
用js小类库获取浏览器的高度和宽度信息
2012/01/15 Javascript
html向js方法传递参数具体实现
2013/08/08 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
简单谈谈原生js的math对象
2017/06/27 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
2018/04/24 Javascript
Vue实现一个无限加载列表功能
2018/11/13 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
python中sleep函数用法实例分析
2015/04/29 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
python写入文件自动换行问题的方法
2019/07/05 Python
使用python绘制二维图形示例
2019/11/22 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
python归并排序算法过程实例讲解
2020/11/04 Python
布局和排版教程 纯css3实现图片三角形排列
2014/10/17 HTML / CSS
美国在线鲜花速递:ProFlowers
2017/01/05 全球购物
高校生生产实习自我鉴定
2013/09/21 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
2014年平安建设工作总结
2014/11/19 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
关于幸福的感言
2015/08/03 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android