그때 그때/JQUERY

탭메뉴 /탭 여러개

web_seul 2020. 10. 7. 10:27
반응형

html

<div class="content">
  <ul class="tab-btn">
    <li><a href="#item-1" class="active">tab01</a></li>
    <li><a href="#item-2">tab02</a></li>
    <li><a href="#item-3">tab03</a></li>
    <li><a href="#item-4">tab04</a></li>
    <li><a href="#item-5">tab05</a></li>
  </ul>
</div>

<div class="tab-box">
    <div id="item-1" class="tab-cont-box item-active">
    </div>
    <div id="item-2" class="tab-cont-box">
    </div>
    <div id="item-3" class="tab-cont-box">
    </div>
    <div id="item-4" class="tab-cont-box">
    </div>
    <div id="item-5" class="tab-cont-box">
    </div>
</div>

 

scss 

.tab-cont-box{
  display:none;
  
  &.item-active{
    display:block;
  }
}

.tab-btn{
  overflow: hidden;
  
  li{
    float: left;
    text-align: center;
    
    a{
      display:block;
      margin-right:-1px;
      
      &.active{
        border:none;
      }
    }
  }
}

 

css

.tab-cont-box{display:none;}  
.tab-cont-box.item-active{display:block;}
    
.tab-btn{overflow: hidden;}  
.tab-btn li{float: left; text-align: center;}    
.tab-btn li a{display:block; margin-right:-1px;}      
.tab-btn li a.active{border:none; color:red;}

 

jquery

$(function() {

	var $tabs = $('.tab-btn a'); 
  
	$tabs.on('click', function(e) {
    
		e.preventDefault();
		  $tabs.removeClass('active');
		  $(this).addClass('active');

		$('.tab-cont-box').hide();
		$(this.hash).show();
	});

});

 

===================================javascript===================================

<div class="content">
   <ul class="tabBtn_wrap">
	<li class="is-active"><a href="#item-1" class="tabBtn"></a></li>
	<li class=""><a href="#item-2" class="tabBtn"></a></li>
   </ul>
</div>

<div class="tabWrap">
   <div id="item-1" class="tabCont" style="display: block;"></div>
   <div id="item-2" class="tabCont"></div>
</div>
ul.tabBtn_wrap li{background: #dcdcdc;}  
ul.tabBtn_wrap li.is-active{background: #4383e4;} 

.tabCont{display:none;}
  let tabList = document.querySelectorAll('.tabBtn_wrap li');
  let contents = document.querySelectorAll('.tabWrap .tabCont')
  let activeCont = '';


    for(var i = 0; i < tabList.length; i++){
      tabList[i].querySelector('.tabBtn').addEventListener('click', function(e){
        e.preventDefault();
        for(var j = 0; j < tabList.length; j++){
          tabList[j].classList.remove('is-active');
          contents[j].style.display = 'none';
        }

        this.parentNode.classList.add('is-active');

        activeCont = this.getAttribute('href');
        document.querySelector(activeCont).style.display = 'block';
      });
    }

==================================javascript==================================================

<div class="tab-wrapper">
    <ul class="tab-menu">
        <li><a href="#tab-1" class="is-active">menu1</a></li>
        <li><a href="#tab-2">menu2</a></li>
        <li><a href="#tab-3">menu3</a></li>
    </ul>
    <div class="tab-content">
        <div id="tab-1" class="is-active">aaa</div>
        <div id="tab-2">bbb</div>
        <div id="tab-3">ccc</div>
    </div>
</div>

<div class="tab-wrapper">
    <ul class="tab-menu">
        <li><a href="#bbb-1" class="is-active">menu1</a></li>
        <li><a href="#bbb-2">menu2</a></li>
        <li><a href="#bbb-3">menu3</a></li>
    </ul>
    <div class="tab-content">
        <div id="bbb-1" class="is-active">aaa</div>
        <div id="bbb-2">bbb</div>
        <div id="bbb-3">ccc</div>
    </div>
</div>
.tab-wrapper { width:960px; margin:auto;}
.tab-menu {padding-left:0;}
.tab-menu li {float:left; list-style:none;  background:#ebebeb; margin-right:10px;}
.tab-menu:after{content:'';display:block; clear:both;}
.tab-menu li a{ color:#999; text-transform:uppercase; font-weight:bold;line-height:27px; text-decoration:none; padding:0 20px; 
    display:block;}
.tab-content div{display:none;}
.tab-content div.is-active{display:block;}

.tab-menu li a.is-active{background: #000; color:#fff;}
/*탭메뉴*/
var targetLink = document.querySelectorAll('.tab-menu a');
var tabContent = document.querySelectorAll('.tab-content > div');

for(var i=0; i < targetLink.length; i++){
    targetLink[i].addEventListener('click',function(e){
        e.preventDefault();
        var orgTarget = e.target.getAttribute('href');
        var tabTarget = orgTarget.replace('#','');

        for(var x=0; x < tabContent.length; x++){
            tabContent[x].style.display='none';
        }
        document.getElementById(tabTarget).style.display="block";

        for(var j=0; j < targetLink.length; j++){
            targetLink[j].classList.remove('is-active');
            e.target.classList.add('is-active');
        }
    });
}

 

========탭여러개=============================================================================

html

<div  id="row-1" class="container">
        <div class="tabWrap">
            <ul class="tabBtn">
                <li><a href="#" class="is-active" id="tab-1">탭메뉴</a></li>
                <li><a href="#" id="tab-2">탭메뉴</a></li>
                <li><a href="#" id="tab-3">탭메뉴</a></li>
            </ul>
            <ul class="panel">
                <li id="content-1">탭 내용1</li>
                <li id="content-2">탭 내용2</li>
                <li id="content-3">탭 내용3</li> 
            </ul>
        </div>
    </div>
  
    <div  id="row-2" class="container">    
        <div class="tabWrap">
            <ul class="tabBtn">
                <li><a href="#"  id="tab-4">탭메뉴</a></li>
                <li><a href="#" class="is-active" id="tab-5">탭메뉴</a></li>
                <li><a href="#" id="tab-6">탭메뉴</a></li>
            </ul>
            <ul class="panel">
                <li id="content-4">탭 내용4</li>
                <li id="content-5">탭 내용5</li>
                <li id="content-6">탭 내용6</li> 
            </ul>
        </div>
    </div>

css

.container {width:990px;margin:0 auto;}
.tabWrap ul{list-style:none;margin:0;padding:0;}
.tabWrap ul.tabBtn li:first-child {margin-left:0;}
.tabWrap ul.tabBtn li {float:left; margin-left:5px;}
.tabWrap ul.tabBtn li a {display:block; background:#00091a;padding:5px 10px; color:#fff; }
.tabWrap ul.tabBtn li a.is-active {background:#0055ff}
.tabWrap ul.tabBtn:after {content:""; display:block; clear:both; }
.tabWrap ul.panel li{display:none; background:#ccc;height:200px;overflow:hidden; }

jquery

$('.tabWrap').each(function(i) {
      var oTab = $(this);
      var tabIndex = $(this).find('.is-active').attr('id').match(/\d+$/);

      $(this).find('.panel').find('#content-' + tabIndex[0]).show();

      $(this).find('.tabBtn li a').click(function() {
     
          /*선택색인*/
          var tabIndex = $(this).attr('id').match(/\d+$/);
          /*타이틀*/
          oTab.find('.tabBtn li a').removeClass('is-active');
          $(this).addClass('is-active');

          /*패널*/
          oTab.find('.panel li').hide();
          oTab.find('.panel').find('#content-' + tabIndex[0]).show();

          return false;
      });

  });
반응형

'그때 그때 > JQUERY' 카테고리의 다른 글

hover 컨텐츠  (0) 2020.12.07
progress bar  (0) 2020.11.16
mouse  (0) 2020.10.06
전체선택 checkbox  (0) 2020.09.18
윈도우 팝업 / 레이어팝업  (0) 2020.09.15