JSFiddle - React, Tailwind, and code Playground

by cfarm

HTML

<ul id="nav">
    <li class="tab" id="email">Email</li>
    <li class="tab" id="portfolio">Portfolio</li>
</ul>
<div class="content">
    <div class="tab-content" id="emailform">Email Form</div>
    <div class="tab-content" id="portfoliocontent">Portfolio content</div>
</div>

CSS

#nav .tab {
    float: left;
    border: 1px solid black;
    margin: 5px;
    padding: 5px;
    cursor: pointer;
}
#nav .active {
    background-color: yellow;   
}
.content {
    position: relative;
    clear: both;
}
.content .tab-content {
    display: none;
    top: 0px;
    left: 0px;
    width: 200px;
    height: 200px;
    border: 1px solid black;
    position: absolute;
}

JavaScript

$(document).ready(function(){
      // object to match up tab id to content id
      tabContentRelation = {
            "email":"emailform",
            "portfolio":"portfoliocontent"
      };
      $(".tab").click(function(){
            var $clickedTab = $(this);
            var clickedId = this.id;
            if ( $clickedTab.is('.active') ) {
                  $clickedTab.removeClass('active');
                  $("#" + tabContentRelation[clickedId]).fadeOut('fast');
            }
            else {
                  $clickedTab.addClass('active');
                  $("#" + tabContentRelation[clickedId]).fadeIn('fast');
                  $('.tab.active:not(#' + clickedId + ')').removeClass('active')
                  .each(function(){
                        $("#" + tabContentRelation[this.id]).fadeOut('fast');
                  });
            }
            return false;
      });
});