很好用的Tab标签切换功能,延迟Tab切换。
一个网页,Tab标签的切换是常见的功能,但我发现很少有前端工程师在做该功能的时候,会为用户多想想,如果你觉得鼠标hover到标签上,然后切换到相应的内容,就那么简单的话,你将是一个不合格的前端工程师啊,其实你不这样做,也无伤大雅,但是作为前端的工程师,我们可以为用户做到更好。想想如果一个网页上,有很多标签,而用户鼠标在不经意间快速的滑动了一下,如果tab标签的切换不经过特殊的处理的话,标签所对应的内容会一同切换,甚至还会想服务器请求内容,增加服务器开销,很显然这一行为不是用户想要的,我们完全可以避免或者减少这种情况发生,通过延迟加切换标签的操作,来提高用户体验,在多标签的网页上,这种尤为重要。下面直接贴源码,大家可以直接使用。
html源码:
<div class="Pannel ">
<div class="tabTitle ">
<ul class="tabs">
<li class="current"><a target="_blank">标签一</a></li>
<li ><a target="_blank">标签二</a></li>
</ul>
<div class="more">
<a target="_blank" href="">更多</a>
</div>
</div>
<div class="tabList">
<div class="linklist f14">
标签一内容
</div>
<div style="display: none;" class="linklist f14">
标签二内容
</div>
</div>
</div>
JS调用方式:
jQuery(".Pannel").Tabs(tabSelector: ".tabs li", conSelector: ".linklist", focusClass: "current"); //参数配置参考你具体的Class
Tab切换源码
jQuery.fn.Tabs = function (options) {
var defaults = {
tabSelector: ".tabs li", // 标签选项卡
conSelector: ".tabcontent", //选项卡内容
focusClass: "c", //标签选中后的样式
moreTrigger: ".tabTitle .more .link", // 扩展 选项卡上有更多的链接情况
events: "mouseover", //事件类型,支持"mouseover", "click"
selected: 0, //默认选中标签项
delay: 0.2 //事件延迟时间
};
var events = ["mouseover", "click"];
var settings = jQuery.extend({}, defaults, options);
var that = this;
var _tabs = jQuery(settings.tabSelector, that);
var _cons = jQuery(settings.conSelector, that);
var _more = jQuery(settings.moreTrigger, that);
var _isDelay = settings.events == events[0] ? !0 : !1;
void function () {
var tab = _tabs.eq(settings.selected);
if (tab && tab.length == 0) {
tab = _tabs.eq(0);
}
tab.addClass(settings.focusClass);
tab.siblings(settings.tabSelector).removeClass(settings.focusClass);
var cons = _cons.eq(settings.selected);
if (cons && cons.length == 0) {
cons = _cons.eq(0);
}
cons.show();
cons.siblings(settings.conSelector).hide();
var more = _more.eq(settings.selected);
if (more && more.length == 0) {
more = _more.eq(0);
}
more.show();
more.siblings().hide();
}();
_tabs.each(function (i, v) {
jQuery(v).on(settings.events, function () {
var _this = this;
delay.apply(this, [settings.delay, function () {
jQuery(_this).addClass(settings.focusClass);
jQuery(_this).siblings(settings.tabSelector).removeClass(settings.focusClass);
jQuery(_cons[i]).show();
jQuery(_cons[i]).siblings(settings.conSelector).hide();
jQuery(_more[i]).show();
jQuery(_more[i]).siblings().hide();
}, _isDelay])
});
});
//接收两个参数 t延迟时间秒为单位,fn要执行的函数,m是否执行延迟取决于事件的类型
var delay = function (t, fn, m) {
if (m) {
var _this = this,
d = setInterval(function () {
fn.apply(_this);
}, t * 1000);
_this.onmouseout = function () {
clearInterval(d);
};
}
else fn.apply(this);
}
}
很好用的Tab标签切换功能,延迟Tab切换。的更多相关文章
- 类似掌盟的Tab页 Android 开源框架ViewPageIndicator 和 ViewPager 仿网易新闻客户端Tab标签 (转)
原博客地址 :http://blog.csdn.net/xiaanming/article/details/10766053 本文转载,记录学习用,如有需要,请到原作者网站查看(上面这个网址) 之前 ...
- Android 开源框架ViewPageIndicator 和 ViewPager 仿网易新闻客户端Tab标签
转载请注明出处:http://blog.csdn.net/xiaanming/article/details/10766053 之前用JakeWharton的开源框架ActionBarSherlock ...
- JS 实现 Tab标签切换功能
Tab标签切换 效果图: HTML部分: <div class="wrap"> <ul id="tag"> < ...
- javascript回车完美实现tab切换功能
javascript通过回车实现tab切换功能,最经有一个项目是给化工厂做的在使用的过程中需要输入大量的数据,使用的都是小键盘区,在以前都是通过excel录入数据的现在, 在网页上需要实现excel ...
- Vue + Element-ui实现后台管理系统(3)---面包屑 + Tag标签切换功能
面包屑 + Tag标签切换功能 有关后台管理系统之前写过两遍博客,看这篇之前最好先看下这两篇博客.另外这里只展示关键部分代码,项目代码放在github上: mall-manage-system 1.V ...
- 多iframe使用tab标签方式添加、删除、切换的处理实例
紧接着上一篇随笔iframe的内容增高或缩减时设置其iframe的高度的处理方案 如果采用iframe来切换显示内容的方式来展现办公Web.那么需要解决几个问题 1.tab标签需要和显示的iframe ...
- jquery切换tab标签例子
之前做了一个简单的小效果,使用jquery方式,让tab标签切换,效果如下 代码其实很简单,首先先把代码分享给大家,代码如下 var shoptoggle = $('.shoptoggle .shop ...
- VIM 实现tab标签页及分屏,切换命令
1,在一个窗口中,VIM 的小tab标签页命令: :tabnew [++opt选项] [+cmd] 文件 建立对指定文件新的tab :tabc 关闭当前的tab ...
- html+css+jQuery+JavaScript实现tab自动切换功能
tab1.html内容 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...
随机推荐
- 总结Web应用中基于浏览器的安全漏洞
1.浏览器缓存 每次打开一个网站,网页的内容会缓存到用户的机器中.如果这些内容在其他网页中需要重新加载,浏览器加载的是缓存,而不是再次下载内容.如果一些Web应用商店以及显示用户敏感信息(比 ...
- Unity与IOS交互
Unity IOS交互 @By 广州小龙 QQ群:63438968 环境:Mac os 10.9.2 Unity 4.2.1f4 Xcode 5.0.2 Unity IOS的交互我写过一个教程 ...
- windows下NGINX和PHP配合(FASTCGI)
昨天测试了TOMCAT,今天考查了NGINX. 按网上说的作,比较简单. http://www.cnblogs.com/huayangmeng/archive/2011/06/15/2081337.h ...
- 【UVALive - 3211】Now or later (二分+2-SAT)
题意: 有n架飞机需要着陆.每架飞机有两种选择,早着陆或者晚着陆,二选其一.现在为了保证飞机的着陆安全,要求两架着陆的飞机的时间间隔的最小值达到最大. 分析: 最小值最大问题我们想到二分答案.对于猜测 ...
- Delphi实现HTMLWebBrowser实现HTML界面
HTML的界面有以下特点:图文混排,格式灵活,可以包含Flash.声音和视频等,实现图文声像的多媒体界面,而且易于建立和维护.另外,HTML的显示环境一般机器上都具备,通常不需要安装额外的软件.当然, ...
- MyEclipse6.5安装SVN插件的三种方法z
一.安装方法: 方法一.如果可以上网可在线安装 . 打开Myeclipse,在菜单栏中选择Help→Software Updates→Find and Install; . 选择Search ...
- leetcode面试准备:Count Complete Tree Nodes
1 题目 Given a complete binary tree, count the number of nodes. In a complete binary tree every level, ...
- 14.7.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量和大小
14.7.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量和大小 改变 InnoDB ...
- redis3.0集群搭建
生产环境中准备使用redis3.0集群了,花了一天时间研究了一下,下面记录一下集群搭建的过程. 服务器规划: 192.168.116.129 7000,7003 192.168.116.130 ...
- 【转】模拟器上安装googleplay apk
原文网址:http://blog.sina.com.cn/s/blog_9fc2ff230101gv57.html 1.进入到sdk\android-sdk-windows\tools>目录下: ...