Skip to content

Instantly share code, notes, and snippets.

@lorens-osman-dev
Created December 6, 2022 04:47
Show Gist options
  • Save lorens-osman-dev/e9a7596d04ba5a8f1782fd0ba123fb0f to your computer and use it in GitHub Desktop.
Save lorens-osman-dev/e9a7596d04ba5a8f1782fd0ba123fb0f to your computer and use it in GitHub Desktop.
Elastic Tabs
<div class="wrapper">
<h2>Elastic Tabs</h2>
<h6>Click on tabs to see them in action</h6>
<nav class="tabs">
<div class="selector"></div>
<a href="#" class="active"><i class="fab fa-superpowers"></i>Avengers</a>
<a href="#"><i class="fas fa-hand-rock"></i>Hulk</a>
<a href="#"><i class="fas fa-bolt"></i>Thor</a>
<a href="#"><i class="fas fa-burn"></i>Marvel</a>
</nav>
</div>
var tabs = $('.tabs');
var selector = $('.tabs').find('a').length;
//var selector = $(".tabs").find(".selector");
var activeItem = tabs.find('.active');
var activeWidth = activeItem.innerWidth();
$(".selector").css({
"left": activeItem.position.left + "px",
"width": activeWidth + "px"
});
$(".tabs").on("click","a",function(e){
e.preventDefault();
$('.tabs a').removeClass("active");
$(this).addClass('active');
var activeWidth = $(this).innerWidth();
var itemPos = $(this).position();
$(".selector").css({
"left":itemPos.left + "px",
"width": activeWidth + "px"
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
@import url('https://fonts.googleapis.com/css?family=Roboto');
body{
height:100vh;
display:flex;
flex-direction:column;
justify-content:center;
align-items:center;
font-family: 'Roboto', sans-serif;
}
h2{
margin:0px;
text-transform: uppercase;
}
h6{
margin:0px;
color:#777;
}
.wrapper{
text-align:center;
margin:50px auto;
}
.tabs{
margin-top:50px;
font-size:15px;
padding:0px;
list-style:none;
background:#fff;
box-shadow:0px 5px 20px rgba(0,0,0,0.1);
display:inline-block;
border-radius:50px;
position:relative;
}
.tabs a{
text-decoration:none;
color: #777;
text-transform:uppercase;
padding:10px 20px;
display:inline-block;
position:relative;
z-index:1;
transition-duration:0.6s;
}
.tabs a.active{
color:#fff;
}
.tabs a i{
margin-right:5px;
}
.tabs .selector{
height:100%;
display:inline-block;
position:absolute;
left:0px;
top:0px;
z-index:1;
border-radius:50px;
transition-duration:0.6s;
transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55);
background: #05abe0;
background: -moz-linear-gradient(45deg, #05abe0 0%, #8200f4 100%);
background: -webkit-linear-gradient(45deg, #05abe0 0%,#8200f4 100%);
background: linear-gradient(45deg, #05abe0 0%,#8200f4 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#05abe0', endColorstr='#8200f4',GradientType=1 );
}
<link href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" rel="stylesheet" />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment