亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript插件Tab選項卡效果

 更新時間:2017年11月14日 09:52:19   作者:吳林  
這篇文章主要為大家詳細介紹了JavaScript插件Tab選項卡效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

閑來無事,研究了一下JavaScript插件的寫法,今天就將自己寫的一個小插件記錄下來。

本文介紹了此款插件的基本用法,實現(xiàn)的功能以及代碼。

首先,來看看最終效果:

這是一款普通的Tab選項卡插件,下面來講講它實現(xiàn)了哪些功能:

1、支持不同鼠標事件觸發(fā)選項卡切換效果;
2、支持不同切換效果的配置,例如淡入淡出/直接切換;
3、支持默認展示第幾個選項卡的配置;
4、支持選項卡的自動切換效果。

例子很簡單,需要用到的知識包括:
1、html、css的基礎(chǔ)知識;
2、對this,prototype,new等關(guān)鍵詞的理解。

簡而言之,就是通過參數(shù)配置的形式來完成不同效果的展示。

下面先看一看如何使用:

1、$(".js-tab").etab();
2、$(".js-tab").etab({
                triggerType: "click",
                effect: "fade",
                invoke: 2,
                auto: 3000
            });
3、Tab.init($(".js-tab"));

本插件支持幾種不同的初始化方式,代碼很簡單,類似于BootStrap插件的使用方法。下面奉上完整的代碼:

index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Tab選項卡</title>
 <link href="tab.css" rel="stylesheet">
 <style>
 * {
  margin:0;
  padding:0;
 }
 body {
  background-color: #323232;
  font-size:12px;
  font-family:微軟雅黑;
  padding:100px;
 }
 ul, li {
  list-style-type: none;
 }
 </style>
 <script src="../lib/jquery-1.11.3.js"></script>
 <script type="text/javascript" src="tab.js"></script>
</head>
<body>
 <div class="js-tab tab">
 <ul class="tab-nav">
  <li class="active"><a href="#">新聞</a> </li>
  <li><a href="#">電影</a> </li>
  <li><a href="#">娛樂</a> </li>
  <li><a href="#">科技</a> </li>
 </ul>

 <div class="content-wrap">
  <div class="content-item current">
  <h3>新聞</h3>
  </div>
  <div class="content-item">
  <h3>電影</h3>
  </div>
  <div class="content-item">
  <h3>娛樂</h3>
  </div>
  <div class="content-item">
  <h3>科技</h3>
  </div>
 </div>
 </div>
 <script>
 $(function() {
//  Tab.init($(".js-tab"));
  $(".js-tab").etab({
  triggerType: "click",
  effect: "fade",
  invoke: 2,
  auto: 3000
  });
  $(".js-tab").etab();
 });
 </script>
</body>
</html>
.tab {
 width: 300px;
}

.tab .tab-nav {
 height: 30px;
}

.tab .tab-nav li {
 float: left;
 margin-right:5px;
 background-color:#767676;
 border-radius:3px 3px 0 0;
}

.tab .tab-nav li a{
 display:block;
 height:30px;
 padding:0 20px;
 color: white;
 line-height:30px;
 text-decoration: none;
}

.tab .tab-nav .active {
 background-color: #fff;

}

.tab .tab-nav .active a{
 color: #777;
}

.tab .content-wrap{
 background-color: white;
 padding:5px;
 height:200px
}

.tab .content-wrap .content-item {
 position:absolute;
 height: 200px;
 display: none;
}

.tab .content-wrap .current {
 height: 200px;
 display: block;
}

最后將插件代碼列出來,在代碼里面已經(jīng)寫了很詳細的注釋:

/**
 * Created by Wu.lin on 2017/11/12.
 */
(function($){

 var Tab = function(tab, _params) {
 var _this = this;

 //保存單個Tab組件
 this.tab = tab;

 this.params = _params;

 //默認配置參數(shù)
 this.config = {
  //用來定義鼠標的出發(fā)類型 "click"/mouseover
  "triggerType": "mouseover",

  //用來定義內(nèi)容切換效果,直接切換/淡入淡出
  "effect": "default",

  //默認展示第幾個Tab
  "invoke": "1",

  //用來定義Tab是否自動切換,當指定了事件間隔,就表示自動切換,并指定了切換間隔
  "auto": false
 };

 //如果配置參數(shù)存在,就擴展默認的配置參數(shù)
 if(this.params){
  $.extend(this.config, this.params);
 }

 //保存Tab標簽列表,以及對應(yīng)的內(nèi)容列表
 this.tabItem = this.tab.find("ul.tab-nav li");
 this.contentItem = this.tab.find("div.content-wrap .content-item");

 //保存配置參數(shù)
 var config = this.config;

 if(config.triggerType === "click") {
  this.tabItem.bind(config.triggerType, function() {
  _this.invoke($(this));
  });

 } else {
  this.tabItem.mouseover(function(){
  _this.invoke($(this));
  });
 }

 //自動切換功能
 if(config.auto) {
  this.timmer = null;

  //計數(shù)器
  this.loop = 0;

  this.autoPlay();

  this.tab.hover(function() {
  window.clearInterval(_this.timmer);
  }, function() {
  _this.autoPlay();
  });
 }

 //設(shè)置默認顯示第幾個Tab
 if(config.invoke > 1) {
  this.invoke(this.tabItem.eq(config.invoke - 1));
 }


 };

 Tab.prototype = {

 //事件驅(qū)動函數(shù)
 invoke: function(currentTab) {

  /**
  * 1、執(zhí)行Tab選中狀態(tài),當前選中Tab加上Active,
  * 2、切換對應(yīng)Tab內(nèi)容,根據(jù)配置參數(shù)effect參數(shù)default|fade
  */

  var index = currentTab.index();
  var conItem = this.contentItem;

  //Tab切換
  currentTab.addClass("active").siblings().removeClass("active");

  //內(nèi)容區(qū)域切換
  var effect = this.config.effect;

  if(effect === "fade") {
  conItem.eq(index).fadeIn().siblings().fadeOut();
  } else {
  conItem.eq(index).addClass("current").siblings().removeClass("current");
  }

  //注意,如果配置了自動切換,記得把當前的loop值設(shè)置為當前的Tab的index
  if(this.config.auto) {
  this.loop = index;
  }
 },

 //自動間隔切換
 autoPlay: function() {

  var _this_ = this,
  tabItems = this.tabItem, //臨時保存Tab列表
  tabLength = tabItems.size(),
  config = this.config;

  this.timmer = window.setInterval(function() {
  _this_.loop++;
  if(_this_.loop >= tabLength) {
   _this_.loop = 0;
  }

  tabItems.eq(_this_.loop).trigger(config.triggerType);
  }, config.auto);

 }
 };

 Tab.init = function(tabs) {
 var _this_ = this;
 tabs.each(function() {
  new _this_($(this));
 });
 // var tab = new Tab($(".js-tab").eq(0));
 };

 //注冊成JQuery方法
 $.fn.extend({
 etab: function(_param) {
  this.each(function () {
  new Tab($(this), _param);
  });
  return this;
 }
 });

 window.Tab = Tab;

})(jQuery);

如此看來,是不是很簡單,一起來動手試試吧!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • a標簽click和href執(zhí)行順序探討

    a標簽click和href執(zhí)行順序探討

    這篇文章主要介紹了a標簽click和href執(zhí)行順序,需要的朋友可以參考下
    2014-06-06
  • js添加事件的通用方法推薦

    js添加事件的通用方法推薦

    下面小編就為大家?guī)硪黄猨s添加事件的通用方法推薦。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • javascript之querySelector和querySelectorAll使用說明

    javascript之querySelector和querySelectorAll使用說明

    其實關(guān)于querySelector和querySelectorAll的介紹說明很多,在此主要是做個記錄
    2011-10-10
  • js獲取鼠標位置實例詳解

    js獲取鼠標位置實例詳解

    這篇文章主要介紹了js獲取鼠標位置的方法,結(jié)合實例形式詳細分析了JavaScript響應(yīng)鼠標事件獲取并操作頁面元素屬性的相關(guān)技巧,需要的朋友可以參考下
    2015-12-12
  • 小程序云開發(fā)如何實現(xiàn)圖片上傳及發(fā)表文字

    小程序云開發(fā)如何實現(xiàn)圖片上傳及發(fā)表文字

    這篇文章主要為大家詳細介紹了小程序云開發(fā)教程,如何實現(xiàn)圖片上傳及發(fā)表文字,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Pyqt5實現(xiàn)多線程程序的使用示例

    Pyqt5實現(xiàn)多線程程序的使用示例

    Pyqt常常使用主從架構(gòu)(Master-Workers 架構(gòu))來避免界面卡死的情況,本文主要介紹了Pyqt5實現(xiàn)多線程程序的使用示例,感興趣的可以了解一下
    2023-11-11
  • Javascript實現(xiàn)前端簡單的路由實例

    Javascript實現(xiàn)前端簡單的路由實例

    本文將使用javascript實現(xiàn)一個極其簡單的路由實例。WEB開發(fā)中路由概念并不陌生,我們接觸到的有前端路由和后端路由。后端路由在很多框架中是一個重要的模塊,同樣前端路由在單頁面應(yīng)用也很常見,它使得前端頁面體驗更流暢。
    2016-09-09
  • 如何使用Javascript中的this關(guān)鍵字

    如何使用Javascript中的this關(guān)鍵字

    本文介紹了如何使用Javascript中的this關(guān)鍵字,文中代碼簡單易懂,對大家的學(xué)習(xí)或工作有一定幫助,需要的朋友可以參考下
    2020-05-05
  • javascript去除字符串中所有標點符號和提取純文本的正則

    javascript去除字符串中所有標點符號和提取純文本的正則

    這篇文章主要介紹了javascript去除字符串中所有標點符號和提取純文本的正則,需要的朋友可以參考下
    2014-06-06
  • Java前后端分離之權(quán)限管理示例分析

    Java前后端分離之權(quán)限管理示例分析

    權(quán)限管理就是管理用戶對于資源的操作。本 CRM 系統(tǒng)的權(quán)限(也稱作資源)是基于角色操作權(quán)限來實現(xiàn)的,即RBAC(Role-Based Access Control,基于角色的訪問控制),就是用戶通過角色與權(quán)限進行關(guān)聯(lián)
    2022-08-08

最新評論