jQuery addClass example
Change class name on click in jQuery
HTML
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js"></script>
<nav class="navbar navbar-expand-lg navbar-light bg-white">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item active">
<a class="nav-link" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Services</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Contact</a>
</li>
</ul>
</div>
</nav>
SCSS
/* remove navbar button stying */
.navbar-toggler {
background: none;
border: none;
/* remove the blue outline when active or focused */
&:active, &:focus {
outline: 0;
}
/* basic styles for each icon bar */
.icon-bar {
display: block;
width: 22px;
height: 2px;
border-radius: 1px;
margin: 4px 0 4px 0;
transition: all 0.2s;
/* custom .navbar-dark .icon-bar background */
.navbar-dark & {
background: red;
}
/* .navbar open top .icon-bar rotated down 45° */
&:nth-of-type(1) {
transform: rotate(45deg);
transform-origin: 10% 10%;
}
/* .navbar open middle .icon-bar invisible */
&:nth-of-type(2) {
opacity: 0;
filter: alpha(opacity=0);
}
/* .navbar open bottom .icon-bar rotated up 45° */
&:nth-of-type(3) {
transform: rotate(-45deg);
transform-origin: 10% 90%;
}
}
/* styles for when .navbar is closed */
&.collapsed {
.icon-bar {
/* .navbar closed top .icon-bar no rotation - straight */
&:nth-of-type(1) {
transform: rotate(0);
}
/* .navbar open middle .icon-bar visible */
&:nth-of-type(2) {
opacity: 1;
filter: alpha(opacity=100);
}
/* .navbar open bottom .icon-bar no rotation - straight */
&:nth-of-type(3) {
transform: rotate(0);
}
}
}
}