两种思想实现基于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配置如下: < ...
随机推荐
- easyui form 提交问题,纠结了很久,有点诡异
http://www.iteye.com/problems/131602 form 提交,后台运行有时慢,页面就不等后台数据的响应,直接alert("服务器维护中,请稍后再试!") ...
- Asp.net MVC3 CSS 模板
http://www.cnblogs.com/huyq2002/archive/2011/12/16/2289795.html Asp.net MVC3 CSS 模板 如果你现在正在用asp.net ...
- 使用 python 自动打包 Android 和 iOS
https://github.com/jinzunyue/package-Android-and-iOS
- webpack插件自动加css3前缀
想要webpack帮忙自动加上“-webkit-”之类的css前缀,我们需要用到postcss-loader和它的插件autoprefixer 1.安装 npm i postcss-loader au ...
- html <label>标签
label元素在呈现上没有特殊效果,但为鼠标用户增进了可用性. 如果在label元素内点击文本,就会触发表单控件. 也就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控件上. &l ...
- CM记录-CDH大数据平台实施经验总结2016(转载)
CDH大数据平台实施经验总结2016(转载) 2016年负责实施了一个生产环境的大数据平台,用的CDH平台+docker容器的方式,过了快半年了,现在把总结发出来. 1. 平台规划注意事项 1.1 业 ...
- JAVA记录-JSP指令
JSP中有三种类型的指令标签 - 序号 指令 说明 1 <%@ page ... %> 定义页面相关属性,如脚本语言,错误页面和缓冲要求. 2 <%@ include ... %&g ...
- 了解Linux操作系统的引导过程
原文地址:http://os.51cto.com/art/200706/49690.htm 1.简介 Linux启动过程指的是从加电到看到shell提示的这一段时间. Linux启动的过程可以大概分为 ...
- php银行卡校验
前言银行金卡,维萨和万事达.银联品牌,如果是贷记卡或准贷记卡,一定为16位卡号.而借记卡可以16-19位不等.美国运通卡则不论金卡或是白金卡.普通卡,都是15位卡号.16-19 位卡号校验位采用 Lu ...
- 使用 scm-manager 搭建 git/svn 代码管理仓库(一)
1.在官网上下载scm-manager 下载地址 https://www.scm-manager.org/download/ 选择下载文件 2. 配置java 环境 参照文章:https://jin ...