>웹 프론트엔드 >JS 튜토리얼 >JavaScript 플러그인 탭 효과 공유 정보

JavaScript 플러그인 탭 효과 공유 정보

小云云
小云云원래의
2017-12-21 10:53:471854검색

JavaScript 플러그인 작성 방법을 공부했는데, 오늘은 제가 작성한 작은 플러그인을 녹음해보겠습니다. 이 글은 주로 자바스크립트 플러그인 탭 효과에 대해 자세히 소개하고 있습니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.

이 글에서는 이 플러그인의 기본적인 사용법과 구현된 기능, 코드를 소개합니다.

먼저 최종 효과를 살펴보겠습니다.

이 플러그인이 구현하는 기능에 대해 이야기해 보겠습니다.

1. 탭 전환 효과를 트리거하는 다양한 마우스 이벤트를 지원합니다.
2. 페이드 인 및 페이드 아웃/직접 전환과 같은 다양한 전환 효과 구성을 지원합니다.
3. 탭의 자동 전환 효과를 지원합니다.

예제는 매우 간단하며 필요한 지식은 다음과 같습니다.

1. html 및 css에 대한 기본 지식
2. this, 프로토타입, new 등과 같은 키워드에 대한 이해

간단히 말하면, 매개변수 구성을 통해 다양한 효과를 발휘하는 것입니다.

먼저 사용 방법을 살펴보겠습니다.

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

2. $(".js-tab").etab({
       "click" ,
효과: "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>
 <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>


.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;
}

마지막으로 플러그인 코드가 나열되고 매우 자세한 설명이 코드에 작성되었습니다.


/**
 * 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);

It 이런거 같은데, 아주 간단하지 않나요?

관련 권장 사항:


탭 전환 효과를 구현하는 JS 예제 코드

순수한 CSS3를 사용하여 탭 전환 예제 구현

이 탭을 만드는 방법 effect_html/css_WEB-ITnose

위 내용은 JavaScript 플러그인 탭 효과 공유 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.