原生javascript实现二级延时菜单
一、实现原理:
使用定时器和排他思想完成
二、代码:

<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
*{margin: 0;padding: 0}
ul,li{list-style: none;}
.main{ width: 400px; height: 50px; float: left; margin-top: 10px; margin-bottom: 10px; }
.main ul li{display: block;float: left; width: 100px; height: 50px;line-height: 50px; text-align: center; font-size: 12px; cursor: pointer; border: 1px solid #f2f2f2;box-sizing: border-box;}
.main ul li.active{ background:orange; color: #fff; }
.item{display: none; width: 400px; height: 50px;font-size: 12px; line-height:50px; overflow: hidden;clear: both; background: #f2f2f2;}
.item ul li{display: block;float: left; width: 100px; height: 50px;line-height: 50px; text-align: center; font-size: 12px; cursor: pointer;}
.item ul li:hover{ background:blue; color: #fff; }
</style>
</head>
<body>
<div class="main">
<ul>
<li>首页</li>
<li>关于我们</li>
<li>企业资讯</li>
<li>人才招聘</li>
</ul>
</div>
<div class="item">
<ul>
<li>选项1</li>
<li>选项2</li>
<li>选项3</li>
</ul>
</div>
<div class="item">
<ul>
<li>我们1</li>
<li>我们2</li>
<li>我们3</li>
</ul>
</div>
<div class="item">
<ul>
<li>企业1</li>
<li>企业2</li>
<li>企业3</li>
</ul>
</div>
<div class="item">
<ul>
<li>招聘1</li>
<li>招聘2</li>
<li>招聘3</li>
</ul>
</div>
<script type="text/javascript">
window.onload = function(){
var mainlis = document.querySelector('.main').querySelectorAll('li');
var items = document.querySelectorAll('.item');
var timer = null;
for (var i = 0; i < mainlis.length; i++) {
mainlis[i].index = i;
mainlis[i].onmouseover = function(){
clearTimeout(timer);
//排他思想,把所有的li去掉当前状态 把所有的item隐藏
for (var j = 0; j < mainlis.length; j++) {
mainlis[j].className = '';
items[j].style.display = 'none';
}
this.className = 'active';
items[this.index].style.display = 'block';
}
items[i].onmouseover = function(){
clearTimeout(timer);
}
mainlis[i].onmouseout = items[i].onmouseout = hide;
}
function hide(){
timer = setTimeout(function(){
for (var j = 0; j < mainlis.length; j++) {
items[j].style.display = 'none';
mainlis[j].className = '';
}
},300)
}
}
</script>
</body>
</html>
原生javascript实现二级延时菜单的更多相关文章
- 云南农职《JavaScript交互式网页设计》 综合机试试卷③——实现二级分类菜单
一.语言和环境 实现语言:HTML,CSS,JavaScript,JQuery. 开发环境:HBuilder. 二.题目(100分): 使用Jquery和JavaScript实现二级分类菜单管理 点击 ...
- JavaScript(获取或设置html元素的宽,高,坐标),确定和判断鼠标是否在元素内部,二级导航菜单鼠标离开样式问题解决
设置: document.getElementById('id').style.width=value document.getElementById('id').style.height=va ...
- 原生JavaScript的省市县三级联动
三级联动是我们写表单时必不可少的,比如在写收货地址时,就用到他了,最近在看原生JavaScript,从基础写起,待完善,以后再写个jquery版的. <!DOCTYPE html> < ...
- Ajax实现动态的二级级联菜单
今天花了点时间用Ajax实现了一个二级级联菜单.整理总结一下.为了把重点放在Ajax和级联菜单的实现上,本文省略了数据库建表语句和操作数据库的代码! 数据库建表语句就不帖出来了.主要有两张表,区域表: ...
- jQuery制作右侧边垂直二级导航菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 原生 JavaScript 实现 state 状态管理系统
原生 JavaScript 实现 state 状态管理系统 Build a state management system with vanilla JavaScript | CSS-Tricks 在 ...
- 利用JS实现一个简单的二级联动菜单
前几天在看js的相关内容,所以就简单写了一个二级联动菜单.分享一下. <!DOCTYPE html> <html lang="en"> <head&g ...
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
C#构造方法(函数) 一.概括 1.通常创建一个对象的方法如图: 通过 Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...
- 原生javascript 实现 animate
原生javascript 实现 animate //animate function getstyle(obj,name){ if(obj.currentStyle){ return obj.curr ...
随机推荐
- Python--day20--序列化模块
序列化:转向一个字符串数据类型 序列 ———— 字符串 序列化和反序列化的概念: 序列化三种方法:json pickle shelve json模块:json模块提供了四个方法dumps和load ...
- ABSD 基于架构的软件设计方法方法简介(摘抄)
ABSD(Architecture-Based Software Design)基于架构的软件设计方法 有三个基础: 第一个基础是功能分解.在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术 ...
- 2019-11-6-Roslyn-how-to-use-WriteLinesToFile-to-write-the-semicolons-to-file
title author date CreateTime categories Roslyn how to use WriteLinesToFile to write the semicolons t ...
- Springboot学习笔记(一)—— 安装
springboot越来越流行了,相比较于springMVC,springboot采用了一种约定大于配置的理念,可以一键安装,一键运行,一键部署,内置tomcat,省去了一大堆配置的时间,并且,spr ...
- 人脸检测MTCNN的训练过程(PRO网络)
以下学习均由此:https://github.com/AITTSMD/MTCNN-Tensorflow 数据集 WIDER Face for face detection and Celeba for ...
- 列表内容自动向上滚动(原生JS)
效果展示 (鼠标移入,滚动停止:鼠标移出,滚动继续) 实现原理 1. html结构:核心是ul > li,ul外层包裹着div.因为想要内容循环滚动无缝衔接,所以在原有ul后面还要有一个一样内容 ...
- CSS选择器权重计算规则
从CSS代码存放位置看权重优先级:内嵌样式 > 内部样式表 > 外联样式表.其实这个基本可以忽视之,大部分情况下CSS代码都是使用外联样式表. 从样式选择器看权重优先级:important ...
- javax.el.PropertyNotFoundException: Property 'XXX' not found on type java.lang.String
遇到的问题: 在使用idea开发Java Web时,调用SSM框架出现了如下错误: 但是我的类中已经定义了geter和seter方法,如下: 而Jsp中的调用代码是通过EL实现,也导入了相应的包.如下 ...
- JavaSE基础---异常
异常 Throwable----具备可拋性:就是该体系中的类和对象都可以被关键字throw或throws所操作. |---Error ---错误,一般不编写针对性处理方式 |---Exception- ...
- koa2+koa-art-template利用日期管道实现在jat模板中将时间戳转为日期时间
var sp = require("silly-datetime"); var render = require("koa-art-template"); va ...