Responsive tabs/accordion

by Ketan Patel

HTML

<div class="mainTabsBody">
  <div class="tabsContainer">
    <ul class="tabs">
      <li class="active" rel="tab1">
        <h3>[H] Tab 1. Important</h3></li>
      <li rel="tab2">
        <h3>[X] Tab 2</h3></li>
      <li rel="tab3">
        <h3>[M] Tab 3</h3></li>
      <li rel="tab4">
        <h3>[R] Tab 4</h3></li>
    </ul>
  </div>

  <div class="tab_container">
    
    <div id="tab1" class="tab_content">
      <h2>Tab 1 content</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ac metus augue.</p>
    </div>
    <!-- #tab1 -->
    
    <div id="tab2" class="tab_content">
      <h2>Tab 2 content</h2>
      <p>Nunc dui velit, scelerisque eu placerat volutpat, dapibus eu nisi. Vivamus eleifend vestibulum odio non vulputate.</p>
    </div>
    <!-- #tab2 -->

    <div id="tab3" class="tab_content">
      <h2>Tab 3 content</h2>
      <p>Nulla eleifend felis vitae velit tristique imperdiet. Etiam nec imperdiet elit. Pellentesque sem lorem, scelerisque sed facilisis sed, vestibulum sit amet eros.</p>
    </div>
    <!-- #tab3 -->
  
    <div id="tab4" class="tab_content">
      <h2>Tab 4 content</h2>
      <p>Integer ultrices lacus sit amet lorem viverra consequat. Vivamus lacinia interdum sapien non faucibus. Maecenas bibendum, lectus at ultrices viverra, elit magna egestas magna, a adipiscing mauris justo nec eros.</p>
    </div>
    <!-- #tab4 -->
  </div>
</div>

CSS

/**/

.tabsContainer {
  display: table;
  width: 100%;
}

.mainTabsBody {
  //border: 1px solid red;
}

ul.tabs {
  margin: 0;
  padding: 0;
  //float: left;
  list-style: none;
  //height: 32px;
  //border-bottom: 1px solid #333;
  //width: 100%;
  display: table-row;
  text-align: center
}

ul.tabs li {
  //float: left;
  //margin: 0;
  cursor: pointer;
  padding: 0px 21px;
  //height: 31px;
  //line-height: 31px;
  /*
  border-top: 1px solid #333;
  border-left: 1px solid #333;
  border-bottom: 1px solid #333;
  */
  background-color: #666;
  color: #ccc;
  //overflow: hidden;
  //position: relative;
  display: table-cell;
}

.tab_last {
  //border-right: 1px solid #333;
}

ul.tabs li:hover {
  background-color: #ccc;
  color: #333;
}

ul.tabs li.active {
  background-color: #fff;
  color: #333;
  //border-bottom: 1px solid #fff;
  //display: block;
}

.tab_container {
  //border: 1px solid #333;
  //border-top: none;
  clear: both;
  //float: left;
  //width: 100%;
  //background: #fff;
  overflow: auto;
  //border: 1px solid red;
  //border-top:0
}

.tab_content {
  padding: 20px;
  display: none;
  background-color: white;
}

.tab_drawer_heading {
  display: none;
}

@media screen and (max-width: 600px) {
  .tabsContainer {
    display: none;
  }
  .tab_drawer_heading {
    background-color: #ccc;
    color: #000;
    //border-top: 1px solid #333;
    margin: 0;
    padding: 5px 20px;
    display: block;
    cursor: pointer;
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
  }
  .tab_drawer_heading:hover {
    background-color: #ccc;
    color: #333;
  }
  .d_active {
    background-color: #666;
    color: #fff;
  }
}

JavaScript

// tabbed content
 // http://www.entheosweb.com/tutorials/css/tabs.asp
 $(".tab_content").hide();
 $(".tab_content:first").show();

 /* if in tab mode */
 $("ul.tabs li").click(function() {

   $(".tab_content").hide();
   var activeTab = $(this).attr("rel");
   $("#" + activeTab).fadeIn();

   /*  $("ul.tabs li").removeClass("active");
    $(this).addClass("active"); */

 });