JSFiddle - React, Tailwind, and code Playground
by yudizsolutions
HTML
<div class="tabs">
<div class="tab">
<input type="radio" id="tab-1" name="tab-group-1" checked>
<label for="tab-1">Tab One</label>
<div class="content">
<p> Some contents</p>
<p> Some contents</p>
<br />
</div>
</div>
<div class="tab second-tab">
<input type="radio" id="tab-2" name="tab-group-1">
<label for="tab-2">Tab Two</label>
<div class="content">
<div class="tabs">
<div class="tab">
<input type="radio" id="tab-4" name="tab-group-2" checked>
<label for="tab-4">Tab One</label>
<div class="content">
<p> Some contents</p>
<p> Some contents</p>
<p> Some contents</p>
<p> Some contents</p>
<p> Some contents</p>
</div>
</div>
<div class="tab">
<input type="radio" id="tab-5" name="tab-group-2">
<label for="tab-5">Tab Two</label>
<div class="content">
<p> Some contents</p>
<p> Some contents</p>
<p> Some contents</p>
<p> Some contents</p>
<p> Some contents</p>
</div>
</div>
<div class="tab">
<input type="radio" id="tab-6" name="tab-group-2">
<label for="tab-6">Tab Three</label>
<div class="content">
You made it this far?!
</div>
</div>
</div>
</div>
</div>
<div class="tab">
<input type="radio" id="tab-3" name="tab-group-1">
<label for="tab-3">Tab Three</label>
<div class="content">
<p> Some contents</p>
<p> Some contents</p>
<p> Some contents</p>
<p> Some contents</p>
</div>
</div>
</div>
<div>
<p>Footer</p>
</div>
CSS
.tabs {
position: relative;
min-height: 300px;
/* This part sucks */
clear: both;
margin: 25px 0;
}
.tab {
float: left;
}
.tab label {
background: #eee;
padding: 10px;
border: 1px solid #ccc;
margin-left: -1px;
position: relative;
left: 1px;
line-height: 18px;
font-size: 14px;
font-family: Arial;
cursor: pointer;
}
.tab [type="radio"] {
display: none;
}
.content {
position: absolute;
top: 28px;
left: 0;
background: white;
right: 0;
bottom: 0;
padding: 20px;
border: 1px solid #ccc;
overflow: auto;
}
.content>* {
opacity: 0;
transform: translateX(-100%);
transition: all 0.6s ease;
}
[type="radio"]:focus~label {
ouline: 2px solid blue;
}
[type="radio"]:checked~label {
background: white;
border-bottom: 1px solid white;
z-index: 2;
}
[type="radio"]:checked~label~.content {
z-index: 1;
}
[type="radio"]:checked~label~.content>* {
opacity: 1;
transform: translateX(0);
}