两种思想实现基于jquery的延时导航菜单,可做延时触发器!
1. 函数式
html如下:
- <div class="box">
- <ul class="clear-fix">
- <li class="outer">
- <a href="#" class="nav">index</a>
- <ul class="inter-box clear-fix">
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- </ul>
- </li>
- <li class="outer">
- <a href="#" class="nav">index1</a>
- <ul class="inter-box clear-fix">
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- </ul>
- </li>
- <li class="outer">
- <a href="#" class="nav">index2</a>
- <ul class="inter-box clear-fix">
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- </ul>
- </li>
- <li class="outer">
- <a href="#" class="nav">index3</a>
- <ul class="inter-box clear-fix">
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- </ul>
- </li>
- </ul>
- </div>
css如下:
- body{
- position: relative;
- z-index:;
- }
- ul,li{list-style: none;}
- *{padding:;margin:;}
- .clear-fix:after{
- content: ".";
- clear: both;
- display: block;
- font-size:;
- height:;
- visibility: hidden;
- }
- .box{
- position: absolute;
- top:;
- left:;
- width: 100%;
- height: 60px;
- z-index:;
- text-align: center;
- background: #ccc;
- }
- .outer{
- float: left;
- line-height: 60px;
- padding: 0 15px;
- position: relative;
- /*z-index: -5;*/
- }
- .inter-box{
- position: absolute;
- width: 100%;
- top: 60px;
- left:;
- /*display: none;*/
- height: 0px;
- overflow: hidden;
- -webkit-transition: opacity linear 0.2s 1s;
- -o-transition: opacity linear 0.2s 1s;
- transition: opacity linear 0.2s 1s;
- }
- .nav{
- display: block;
- width: 100%;
- height: 100%;
- }
- .inter-box li{
- background: #dfdfdf;
- line-height: 30px;
- }
js如下,需引入jquery:
- var timer=initTimer();
- $(".nav").each(function(i,ele){
- $(ele).attr("index",i);
- $(ele).mouseenter(function(){
- var _this=$(this).attr("index")
- show(_this);
- })
- $(ele).mouseleave(function(){
- var _this=$(this).attr("index");
- hide(_this);
- })
- })
- $(".inter-box").each(function(i,ele){
- $(ele).attr("index",i);
- $(ele).mouseenter(function(){
- console.log(111)
- var _this=$(this).attr("index")
- show(_this);
- })
- $(ele).mouseleave(function(){
- var _this=$(this).attr("index");
- hide(_this);
- })
- })
- function initTimer(){
- var timer={};
- $(".nav").each(function(i,ele){
- timer[i]=null;
- });
- return timer;
- }
- function show(nowIndex){
- clearTimeout(timer[nowIndex]);
- $(".inter-box").eq(nowIndex).animate({"height":"300px"});
- }
- function hide(nowIndex){
- timer[nowIndex]=setTimeout(function(){
- $(".inter-box").eq(nowIndex).animate({"height":"0px"});
- },200)
- }
2. 面向对象
html如下:
- <div class="box">
- <ul class="clear-fix">
- <li class="outer">
- <a href="#" class="nav">index</a>
- <ul class="inter-box clear-fix">
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- </ul>
- </li>
- <li class="outer">
- <a href="#" class="nav">index1</a>
- <ul class="inter-box clear-fix">
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- </ul>
- </li>
- <li class="outer">
- <a href="#" class="nav">index2</a>
- <ul class="inter-box clear-fix">
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- </ul>
- </li>
- <li class="outer">
- <a href="#" class="nav">index3</a>
- <ul class="inter-box clear-fix">
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- <li><a href="#">inter1</a></li>
- </ul>
- </li>
- </ul>
- </div>
css如下:
- body{
- position: relative;
- z-index:;
- }
- ul,li{list-style: none;}
- *{padding:;margin:;}
- .clear-fix:after{
- content: ".";
- clear: both;
- display: block;
- font-size:;
- height:;
- visibility: hidden;
- }
- .box{
- position: absolute;
- top:;
- left:;
- width: 100%;
- height: 60px;
- z-index:;
- text-align: center;
- background: #ccc;
- }
- .outer{
- float: left;
- line-height: 60px;
- padding: 0 15px;
- position: relative;
- /*z-index: -5;*/
- }
- .inter-box{
- position: absolute;
- width: 100%;
- top: 60px;
- left:;
- height: 0px;
- overflow: hidden;
- -webkit-transition: opacity linear 0.2s 1s;
- -o-transition: opacity linear 0.2s 1s;
- transition: opacity linear 0.2s 1s;
- }
- .inter-box li{
- background: #dfdfdf;
- line-height: 30px;
- }
- .nav{
- display: block;
- width:100%;
- height: 100%;
- }
js如下:
- function delayController(obj){
- var _this=this;
- this.set={
- btn:$(".nav").eq(0),
- box:$(".box").eq(0),
- delayTime:200,
- showFn:function(_this){},
- hideFn:function(_this){}
- }
- $.extend(this.set,obj);
- this.timer=null;
- this.timer2=null;
- this.set.btn.mouseenter(function(){ show(); })
- this.set.btn.mouseleave(function(){ hide(); })
- this.set.box.mouseenter(function(){ show(); })
- this.set.box.mouseleave(function(){ hide(); })
- function show(){
- clearTimeout(_this.timer);
- _this.timer2=setTimeout(function(){
- _this.set.showFn(_this);
- },_this.set.delayTime)
- }
- function hide(){
- clearTimeout(_this.timer2);
- _this.timer=setTimeout(function(){
- _this.set.hideFn(_this);
- },_this.set.delayTime)
- }
- }
- //调用
- $(".nav").each(function(i,ele){
- new delayController({
- btn:$(".nav").eq(i),
- box:$(".inter-box").eq(i),
- showFn:function(_this){
- _this.set.box.animate({"height":"200px"});
- },
- hideFn:function(_this){
- _this.set.box.animate({"height":"0px"});
- }
- });
- })
两种思想实现基于jquery的延时导航菜单,可做延时触发器!的更多相关文章
- 基于jQuery垂直多级导航菜单代码
基于jQuery垂直多级导航菜单代码是一款黑色风格的jQuery竖直导航菜单特效下载.效果图如下: 在线预览 源码下载 实现的代码. html代码: <ul class="ce&q ...
- 基于jQuery右下角旋转环状菜单代码
基于jQuery右下角旋转环状菜单代码.这是一款固定在页面的右下角位置,当用户点击了主菜单按钮后,子菜单项会以环状旋转进入页面,并使用animate.css来制作动画效果.效果图如下: 在线预览 ...
- 一款基于jquery的侧边栏导航
之前为大家介绍了好多导航菜单,今天给大家分享一款基于jquery的侧边栏导航.这款导航侧边滑出,适合放在手机网页或webapp.一看下实现的效果图: 在线预览 源码下载 实现的代码. html代码 ...
- 我收集到的最好的jQuery和CSS3导航菜单
jQuery和CSS3导航菜单在网页设计和开发的重要组成部分之一.利用jQuery+CSS3实现可以做出拥有各种动画效果的漂亮菜单.在这里,我们收集了一些最好的jQuery+CSS3实现的导航菜单. ...
- 20款jquery下拉导航菜单特效代码分享
20款jquery下拉导航菜单特效代码分享 jquery仿京东商城左侧分类导航下拉菜单代码 jQuery企业网站下拉导航菜单代码 jQuery css3黑色的多级导航菜单下拉列表代码 jquery响应 ...
- 一个基于jQuery的简单树形菜单
在工作中的项目使用的是一个前端基于 jQuery easyui 的一个系统,其中左侧的主菜单使用的是 easyui 中的 tree 组件,不是太熟悉,不过感觉不是太好用. 比如 easyui 中的 t ...
- jQuery垂直二级导航菜单代码
http://www.sucaihuo.com/js/395.html 分享一个简单的垂直二级菜单导航. HTML <div id="my_menu" class=&qu ...
- koa2实现session的两种方式(基于Redis 和MySQL)
一.基于MySQL的实现方式 这种方式需要安装koa-session-minimal和koa-mysql-session两个依赖. 执行 npm install koa-session-minimal ...
- mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)
下面示例在mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现 Demo的基础上进行优化 以新增一个用户为例子,原UserMapper.xml配置如下: < ...
随机推荐
- hiho_offer收割18_题解报告_差第四题
I.求逆元欧几里得方法 II.模拟细心+耐心 *本人感悟:自己的错误在于:对于这道模拟题没有耐心静下来一字一字看题,一行一行调错,一步一步调试,我要引以为戒. III.dpf[i][j][k]=max ...
- 在windows上部署使用Redis出现问题的解决方法
下载Redis 在Redis的官网下载页上有各种各样的版本,我这次是在windows上部署的,要去GitHub上下载.目前的是2.8.12版的,直接解压,在\bin\release 目录下有个压缩包, ...
- Object和泛型
这俩东东呢实现的效果是一样的,但是它们俩的效率不一样,原理也不一样.直接说结论吧,泛型比Object好用,效率高.因为Object有一个装箱和拆箱的过程,倘若是很多的数据那效率就低到不行了,而泛型没有 ...
- 【DS】排序算法之快速排序(Quick Sort)
一.算法思想 快速排序,顾名思义,效率比较于其他算法,效率比较高.<算法导论>也专门对其进行讲解.其算法设计使用分治思想,如下: 1)从数组A[p...r]中选择一个元素,将数组划分成两个 ...
- Lua程序设计(三)面向对象实现一个简单的类
1.Lua面向对象实现步骤 ①创建一个全局表(称之为元表) ②设置这个元表的__index值(值通常为元表自己,这样就能通过__index查找到对应的属性和方法)__index 赋值其实是一个func ...
- ASP.NET实现网站的自动升级
网站的自动升级主要是要实现从一台服务器上下载某些文件到本服务器上,然后对下载下来的文件进行更新等操作. 比如,现在有服务器A,服务器B和客户端C. 作为COM公司开发的产品DIV网站系统被安装到服务器 ...
- Django中合并同一个model的多个QuerySet
[1]相同modelarticles1 = Article.objects.order_by("autoid").filter(autoid__lt = 16).values('a ...
- centos7.2 安装 composer
安装Composer https://pkg.phpcomposer.com/#how-to-install-composer # 下载composer.phar curl -sS https:// ...
- 洛谷 P3320: bzoj 3991: LOJ 2182: [SDOI2015]寻宝游戏
题目传送门:LOJ #2182. 题意简述: 一棵 \(n\) 个节点的树,边有边权. 每个点可能是关键点,每次操作改变一个点是否是关键点. 求所有关键点形成的极小联通子树的边权和的两倍. 题解: 有 ...
- windows下nodejs服务器的安装与配置
1下载安装 download from the link: https://nodejs.org/en/ windows下的安装直接运行exe,略过-- 注:由于用户权限的问题,最好将nodejs安装 ...