原生javascript实现二级延时菜单
2024-10-08 04:30:28
一、实现原理:
使用定时器和排他思想完成
二、代码:
<!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>
最新文章
- swift -- 学习记录
- Maven 系列 二 :Maven 常用命令,手动创建第一个 Maven 项目【转】
- 【转】代码编辑器(一)-TSynCompletionProposal用法
- Android Studio如何快速生成get,set,tostring,构造函数
- oracle 字段上下两条记录的相减
- hdu 4107当卡段树
- Https 客户端与服务器交互过程梳理(转)
- Emacs配置(考场必备)(Emacs)
- thinkphp实现文件上传
- python 获取秒级时间间隔
- 虚拟机Linux不能上网简单有效的解决办法
- jQuery AJAX方法 前台往后台传数据
- WIN10平板 传递优化文件能否删除
- Nginx的基础配置管理
- JDK5.0 特性线程 同步装置之CountDownLatch 同步装置之CyclicBarrier 线程 BlockingQueue
- YII之yiic创建YII应用
- C基本语句和运算符
- 面试7 GC机制中如何判断一个对象是否任在使用
- 【操作系统】C语言编写的FAT16文件系统
- python opencv3 轮廓检测
热门文章
- HDU 1051
- 我来教你用AWS IoT.Part1--配置和接入
- H3C OSPF协议分区域管理
- python类中的双下划线方法
- Django入门6--Django超链接
- java.lang.IllegalArgumentException: attempt to create saveOrUpdate event with null entity
- <;Standard Template Library>;标准模板库专项复习总结(一)
- How to output the target message in dotnet build command line
- spring-redis-session 自定义 key 和过期时间
- golang实现依赖注入