js制作可以延时消失的菜单


Posted in Javascript onJanuary 13, 2017

本文实例为大家分享了js可延时消失的菜单,供大家参考,具体内容如下

js制作可以延时消失的菜单

代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
*{padding:0;margin:0;}
ul{list-style:none;}
a{text-decoration:none;}
#menu{height:200px;border:1px solid #ccc;margin:40px auto;position:relative;}
#title{position:absolute;left:0;top:0;height:50px;border:1px solid yellow;background:blue;}
#title li{text-align:center;width:80px;height:30px;line-height:30px;float:left;background:#f1f1f1;border-radius:10px;color:#000;font-weight:bold;margin:10px 5px;cursor:pointer;}
#subtitle{height:30px;;border:1px solid #ccc;border-radius:10px;position:absolute;top:60px;left:10px;}
#subtitle:before{content:'';position:absolute;border-top:7px solid transparent;border-right:7px solid transparent;border-bottom:9px solid #ccc;border-left:7px solid transparent;top:-16px;left:30px;}
#subtitle:after{content:'';position:absolute;border-top:7px solid transparent;border-right:7px solid transparent;border-bottom:9px solid #fff;border-left:7px solid transparent;top:-15px;left:30px;}
#subtitle a{display:inline-block;height:20px;line-height:20px;margin:5px 5px;float:left;}
#subtitle a:hover{text-decoration:underline;}
</style>
<script>
window.onload = function () {
 var title = document.getElementById('title');
 var subtitle = document.getElementById('subtitle');
 var aA = subtitle.getElementsByTagName('a');
 var aLi = title.getElementsByTagName('li');
 var arr = [
  { title : '首页', subtitle : ['首页1','首页2','首页3']},
  { title : '关于我们', subtitle : ['关于我们1','关于我们2','关于我们3','关于我们4','关于我们5']},
  { title : '课程', subtitle : ['课程1','课程2','课程3']},
  { title : '新闻', subtitle : ['新闻1','新闻2']},
 ];
 var timer = null;



 for ( var i = 0; i < arr.length; i++ ) {
  var oLi = document.createElement('li');
  oLi.innerHTML = arr[i].title;
  oLi.index = i;
  oLi.onmouseover = function () {
   var width = parseInt(getStyle(this,'width'));
   var marginRight = parseInt(getStyle(this,'marginRight'));
   clearTimeout(timer);
   subtitle.innerHTML = '';
   createA(this.index);
   subtitle.style.left = 10 + (width + marginRight) * this.index + 'px';
   subtitle.style.display = 'block';
  }
  oLi.onmouseout = function () {
   timer = setTimeout(function () {
    subtitle.style.display = 'none';
   }, 100);
  }
  title.appendChild(oLi);
 } 
 subtitle.onmouseover = function () {
  clearTimeout(timer);
  this.style.display = 'block';
 }
 subtitle.onmouseout = function () {
  this.style.display = 'none';
 }
 createA(0);

 function createA(index){
  for ( var j = 0; j < arr[index].subtitle.length; j++ ){
   var oA = document.createElement('a');
   oA.innerHTML = arr[index].subtitle[j];
   subtitle.appendChild(oA);
  }
 }
 function getStyle(ele, attr) {
  return ele.currentStyle ? ele.currentStyle[attr] : 
   getComputedStyle(ele,0)[attr];
 }

}
</script>
</head>

<body>
<div id="menu">
 <ul id="title">
 </ul>
 <div id="subtitle">
 </div>
</div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS Array对象入门分析
Oct 30 Javascript
JavaScript中继承的一些示例方法与属性参考
Aug 07 Javascript
jQuery 源码分析笔记(3) Deferred机制
Jun 19 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
Oct 12 Javascript
json的定义、标准格式及json字符串检验
May 11 Javascript
JavaScript实现节点的删除与序号重建实例
Aug 05 Javascript
jQuery EasyUI常用数据验证汇总
Sep 18 Javascript
jQuery zTree树插件简单使用教程
Jan 10 Javascript
记一次webapck4 配置文件无效的解决历程
Sep 19 Javascript
jQuery使用bind动态绑定事件无效的处理方法
Dec 11 jQuery
如何将百度地图包装成Vue的组件的方法步骤
Feb 12 Javascript
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
原生js实现下拉框功能(支持键盘事件)
Jan 13 #Javascript
js实现自动轮换选项卡
Jan 13 #Javascript
Javascript 使用ajax与C#获取文件大小实例详解
Jan 13 #Javascript
详解angularJs中自定义directive的数据交互
Jan 13 #Javascript
微信小程序 MD5加密登录密码详解及实例代码
Jan 12 #Javascript
很棒的一组js图片轮播特效
Jan 12 #Javascript
微信小程序 页面跳转传递值几种方法详解
Jan 12 #Javascript
You might like
php实现网站插件机制的方法
2009/11/10 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
Jquery 基础学习笔记
2009/05/29 Javascript
使用原生javascript创建通用表单验证——更锋利的使用dom对象
2011/09/13 Javascript
JavaScript使用ActiveXObject访问Access和SQL Server数据库
2015/04/02 Javascript
Javascript原型链的原理详解
2016/01/05 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
vue中axios处理http发送请求的示例(Post和get)
2017/10/13 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
[15:46]教你分分钟做大人——沙王
2015/03/11 DOTA
python类型强制转换long to int的代码
2013/02/10 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
pycharm显示远程图片的实现
2019/11/04 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
《难忘的泼水节》教学反思
2014/02/27 职场文书
大课间活动实施方案
2014/03/06 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
运动会1000米加油稿
2015/07/21 职场文书
小学英语教学反思范文
2016/02/15 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
Go语言安装并操作redis的go-redis库
2022/04/14 Golang
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL