Maison > interface Web > js tutoriel > Explication détaillée de l'onglet du plug-in JavaScript

Explication détaillée de l'onglet du plug-in JavaScript

小云云
Libérer: 2018-01-19 11:18:50
original
2226 Les gens l'ont consulté

Cet article présente principalement en détail l'effet Tab du plug-in JavaScript. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer. J'espère qu'il pourra aider tout le monde.

Je n'ai rien à faire, alors j'ai étudié comment écrire des plug-ins JavaScript, et aujourd'hui j'enregistrerai un petit plug-in que j'ai écrit.

Cet article présente l'utilisation de base, les fonctions implémentées et le code de ce plug-in.

Tout d'abord, jetons un coup d'œil à l'effet final :

Il s'agit d'un plug-in Tab ordinaire. Parlons de son implémentation ci-dessous. . Quelles fonctions :

1. Prend en charge différents événements de souris pour déclencher des effets de commutation d'onglets
2. Prend en charge la configuration de différents effets de commutation, tels que le fondu entrant et sortant/la commutation directe ; . Prend en charge la configuration du numéro d'affichage par défaut des onglets ;
4. Prend en charge l'effet de commutation automatique des onglets.

L'exemple est très simple, et les connaissances requises comprennent :

1. Connaissance de base du html et du css
2. Compréhension de mots-clés tels que this, prototype, new, etc.

En bref, il s'agit d'afficher différents effets grâce à la configuration des paramètres.

Voyons comment l'utiliser :

1 $(".js-tab").etab();

2. ") .etab({
triggerType : "clic",
effet : "fade",
invocation : 2,
auto : 3000
              });
3. Tab. init( $(".js-tab"));

Ce plug-in prend en charge plusieurs méthodes d'initialisation différentes et le code est très simple, similaire à la façon d'utiliser le plug-in BootStrap. Le code complet est fourni ci-dessous :

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>
 <p 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>

  <p class="content-wrap">
   <p class="content-item current">
    <h3>新闻</h3>
   </p>
   <p class="content-item">
    <h3>电影</h3>
   </p>
   <p class="content-item">
    <h3>娱乐</h3>
   </p>
   <p class="content-item">
    <h3>科技</h3>
   </p>
  </p>
 </p>
 <script>
  $(function() {
//   Tab.init($(".js-tab"));
   $(".js-tab").etab({
    triggerType: "click",
    effect: "fade",
    invoke: 2,
    auto: 3000
   });
   $(".js-tab").etab();
  });
 </script>
</body>
</html>
Copier après la connexion
.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;
}
Copier après la connexion
Enfin, le code du plug-in est répertorié, et des commentaires très détaillés ont été écrits dans le code :

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

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

  //保存单个Tab组件
  this.tab = tab;

  this.params = _params;

  //默认配置参数
  this.config = {
   //用来定义鼠标的出发类型 "click"/mouseover
   "triggerType": "mouseover",

   //用来定义内容切换效果,直接切换/淡入淡出
   "effect": "default",

   //默认展示第几个Tab
   "invoke": "1",

   //用来定义Tab是否自动切换,当指定了事件间隔,就表示自动切换,并指定了切换间隔
   "auto": false
  };

  //如果配置参数存在,就扩展默认的配置参数
  if(this.params){
   $.extend(this.config, this.params);
  }

  //保存Tab标签列表,以及对应的内容列表
  this.tabItem = this.tab.find("ul.tab-nav li");
  this.contentItem = this.tab.find("p.content-wrap .content-item");

  //保存配置参数
  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;

   //计数器
   this.loop = 0;

   this.autoPlay();

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

  //设置默认显示第几个Tab
  if(config.invoke > 1) {
   this.invoke(this.tabItem.eq(config.invoke - 1));
  }


 };

 Tab.prototype = {

  //事件驱动函数
  invoke: function(currentTab) {

   /**
    * 1、执行Tab选中状态,当前选中Tab加上Active,
    * 2、切换对应Tab内容,根据配置参数effect参数default|fade
    */

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

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

   //内容区域切换
   var effect = this.config.effect;

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

   //注意,如果配置了自动切换,记得把当前的loop值设置为当前的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);
Copier après la connexion
Ça parait que c'est très simple, essayons ensemble !

Recommandations associées :

jquery implémente l'effet de changement d'onglet

Partage de l'effet d'onglet du plug-in JavaScript

Exemple de code JS pour implémenter l'effet de changement de tabulation

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal