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小tip资料
Nov 23 Javascript
toggle()隐藏问题的解决方法
Feb 17 Javascript
全面理解闭包机制
Jul 11 Javascript
js+css3制作时钟特效
Oct 16 Javascript
微信小程序(应用号)开发新闻客户端实例
Oct 24 Javascript
深入理解Node.js 事件循环和回调函数
Nov 02 Javascript
Vue.js中的图片引用路径的方式
Jul 28 Javascript
AngularJs 禁止模板缓存的方法
Nov 28 Javascript
vue2.0模拟锚点的实例
Mar 14 Javascript
浅谈一个webpack构建速度优化误区
Jun 24 Javascript
Vue.js组件使用props传递数据的方法
Oct 19 Javascript
JavaScript parseInt0.0000005打印5原理解析
Jul 23 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
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
php中Ctype函数用法详解
2014/12/09 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
2010/05/06 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
2012/02/13 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
jquery实现拖拽添加元素功能
2020/12/01 jQuery
Python基于Tkinter实现的记事本实例
2015/06/17 Python
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
Django压缩静态文件的实现方法详析
2018/08/26 Python
python实现计数排序与桶排序实例代码
2019/03/28 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
2019/06/21 Python
关于pycharm中pip版本10.0无法使用的解决办法
2019/10/10 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
车工岗位职责
2013/11/26 职场文书
导师就业推荐信范文
2014/05/22 职场文书
基层党建工作宣传标语
2014/06/24 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
中秋客户感谢信
2015/01/22 职场文书
无故旷工检讨书
2015/08/15 职场文书
2016年记者节感言
2015/12/08 职场文书
优秀员工演讲稿
2019/06/21 职场文书
详解Python常用的魔法方法
2021/06/03 Python