千家信息网

js开发插件如何实现tab选项卡效果

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,小编给大家分享一下js开发插件如何实现tab选项卡效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、搭建页面
千家信息网最后更新 2026年11月04日js开发插件如何实现tab选项卡效果

小编给大家分享一下js开发插件如何实现tab选项卡效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、搭建页面

二、基础样式

* { margin: 0; padding: 0;}ul, li { list-style: none;}body { background: #323232; font-size: 12px; padding: 100px;}.tab { width: 300px;}.tab .tab-nav { height: 30px;}.tab .tab-nav li { display: inline-block; margin-right: 5px; background: #767676; border-radius: 3px 3px 0 0;}.tab .tab-nav li a { display: block; text-decoration: none; height: 30px; line-height: 30px; padding: 0 20px; color: #fff;}.tab .tab-nav li.active { background: #fff; color: #777;}.tab .tab-nav li.active a { color: #777;}.tab .content { background: #fff; height: 200px; padding: 5px;}.tab .content-item { position: absolute; display: none;}.tab .content img { width: 290px; height: 200px;}.tab .content .current { display: block;}

三、效果

四、选项卡开发的思维结构图:需要对象、参数、和方法

五、js实战

(function () { function Tab (tab) {  this.tab = tab;  var _this_ = this;  // 默认配置参数,属性名为双引号,不然parseJSON转义不成功  this.config = {   // 用来定义鼠标的触发类型,是click还是mouseover   "triggerType": "mouseover",   // 用来定义内容切换效果,是直接切换,还是淡入淡出效果   "effect": "default",   // 默认展示第几个tab   "invoke": 1,   // 用来定义tab是否自动切换,指定时间为多久切换   "auto": false  }  // 如果配置存在,就扩展掉原来的配置,$.extend合并  if (this.getConfig()) {   $.extend(this.config, this.getConfig());  }  // 鼠标触发功能  var config = this.config;   // 存储配置,this.config会每次查找  this.liItem = this.tab.find('.tab-nav li');   // 获取li  this.contentItem = this.tab.find('.content div');   // 获取内容  // 判断如果是click。。当操作时,执行invoke方法进行切换  if (config.triggerType === 'click') {   this.liItem.click(function () {    _this_.invoke($(this));   });  } else {   this.liItem.mouseover(function () {    _this_.invoke($(this));   });  }  // 自动切换功能  if (this.config.auto) {   this.timer = null;   this.count = 0;   // 计数器   this.autoplay();   // 当鼠标浮在上面停止,移开时继续   this.tab.hover(function () {    clearInterval(_this_.timer);   // 此时的this是this.tab   }, function () {    _this_.autoplay();   })  }  // 默认显示第几个  if (this.config.invoke > 1) {   this.invoke(this.liItem.eq(this.config.invoke - 1));   // 直接切换  } } Tab.prototype = {  // 获取配置参数  getConfig: function () {   //把tab元素上的data-config中的内容拿出来   var config = this.tab.attr('data-config');   if (config && config != '') {    return $.parseJSON(config);   // 将json对象转换为js对象   } else {    return null;   }  },  // 获取传入的li,进行切换  invoke: function (li) {   var index = li.index();   // 获取li的索引   var liItem = this.liItem;   var contentItem = this.contentItem;      li.addClass('active').siblings().removeClass('active');   // 自身加active其他兄弟都去除   // 淡入淡出还是默认   var effect = this.config.effect;   if (effect === 'default') {    contentItem.eq(index).addClass('current').siblings().removeClass('active');   } else {    contentItem.eq(index).fadeIn().siblings().fadeOut();   }   // 当自动切换时,要更改count,否则每次都从头开始   this.count = index;  },  // 自动切换  autoplay: function () {   var _this_ = this;   var length = this.liItem.length;   // 获取长度   this.timer = setInterval(function() {      _this_.count ++;   // 计数加一,此时的this是this.timer    if (_this_.count >= length) {     _this_.count = 0;    }    // 第几个li触发事件    _this_.liItem.eq(_this_.count).trigger(_this_.config.triggerType);   }, this.config.auto);  } } window.Tab = Tab;   // 将Tab注册为window对象,不然外部无法访问  })();

六、调用

// 将第一个tab传给Tab类var tab = new Tab($('.tab').eq(0));

七、优化,当有多个tab时,不用new多个

1、第一种通过init

// 通过init初始化 Tab.init = function (tabs) {  tabs.each(function () {   new Tab($(this));  }); }

调用

Tab.init($('.tab'));

2、第二种通过注册为jquery方法

// 注册为jquery方法 $.fn.extend({  tab: function () {   this.each(function () {   // 这个this是谁调用的tab方法    new Tab($(this));     // 这个this是each过的li   });   return this;   // 链式操作  } })

调用

$('.tab').tab();

以上是"js开发插件如何实现tab选项卡效果"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

切换 效果 内容 方法 配置 对象 开发 参数 篇文章 还是 鼠标 插件 功能 多个 成功 不怎么 不用 事件 从头 元素 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 亿人帮互联网科技有限公司 金诺互联网科技 科技互联网技术 互联网科技战争 互联网的科技创新 奇酷互联网科技公司 狮子座互联网科技有限公司 重庆科技学院互联网 成都铂石互联网科技做什么的 南平创想时代互联网科技有限公司 千方科技属于互联网企业吗 辽宁互联网新科技 呼和浩特新华互联网科技学院 健康食品互联网创新科技园项目 河南住房之家互联网科技 互联网在线教育科技创业 互联网金融科技公司的优势 2021世界互联网领先科技成果发布 三亚科技创新互联网基地 广东猫王互联网科技有限公司电话 互联网科技名片 深圳九邦互联网科技有限公司 江苏根荣互联网科技 互联网科技工作委员会毛军 今日互联网科技 狮子座互联网科技有限公司 美国互联网黑科技 伊宁互联网科技做什么的 每天都有哪些好的互联网科技 同城互联网络科技
0