<div class="page-wrapper">
<div class="nav-wrapper">
<div class="grad-bar"></div>
<nav class="navbar">
<img src="https://upload.wikimedia.org/wikipedia/en/thumb/c/c8/Bluestar_%28bus_company%29_logo.svg/1280px-Bluestar_%28bus_company%29_logo.svg.png" alt="Company Logo">
<div class="menu-toggle" id="mobile-menu">
<span class="bar"></span>
<span class="bar"></span>
<span class="bar"></span>
</div>
<ul class="nav no-search">
<li class="nav-item"><a href="#">Home</a></li>
<li class="nav-item"><a href="#">About</a></li>
<li class="nav-item"><a href="#">Work</a></li>
<li class="nav-item"><a href="#">Careers</a></li>
<li class="nav-item"><a href="#">Contact Us</a></li>
<i class="fas fa-search" id="search-icon"></i>
<input class="search-input" type="text" placeholder="Search..">
</ul>
</nav>
</div>
<section class="headline">
<h1>Responsive Navigation</h1>
<p>Using CSS grid and flexbox to easily build navbars!</p>
</section>
<section class="features">
<div class="feature-container">
<img src="https://cdn-images-1.medium.com/max/2000/1*HFAEJvVOq4AwFuBivNu_OQ.png" alt="Flexbox Feature">
<h2>Flexbox Featured</h2>
<p>This pen contains use of flexbox for the headline and feature section! We use it in our mobile navbar and show the power of mixing css grid and flexbox.</p>
</div>
<div class="feature-container">
<img src="https://blog.webix.com/wp-content/uploads/2017/06/20170621-CSS-Grid-Layout-710x355-tiny.png" alt="Flexbox Feature">
<h2>CSS Grid Navigation</h2>
<p>While flexbox is used for the the mobile navbar, CSS grid is used for the desktop navbar showing many ways we can use both.</p>
</div>
<div class="feature-container">
<img src="https://www.graycelltech.com/wp-content/uploads/2015/06/GCT-HTML5.jpg" alt="Flexbox Feature">
<h2>Basic HTML5</h2>
<p>This pen contains basic html to setup the page to display the responsive navbar.</p>
</div>
</section>
</div>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Lato', 'Arial', sans-serif;
}
/* HEADINGS */
h1, p {
color: #fff;
text-align: center;
line-height: 1.4;
}
h1 {
font-size: 2.2rem;
}
h2 {
color: #000;
font-size: 1.3rem;
text-align: center;
line-height: 1.4;
margin-bottom: 10px;
}
/* BASIC SETUP */
.page-wrapper {
width: 100%;
height: auto;
}
.nav-wrapper {
width: 100%;
position: -webkit-sticky; /* Safari */
position: sticky;
top: 0;
background-color: #fff;
}
.grad-bar {
width: 100%;
height: 5px;
background: linear-gradient(-45deg, #EE7752, #E73C7E, #23A6D5, #23D5AB);
background-size: 400% 400%;
-webkit-animation: gradbar 15s ease infinite;
-moz-animation: gradbar 15s ease infinite;
animation: gradbar 15s ease infinite;
}
/* NAVIGATION */
.navbar {
display: grid;
grid-template-columns: 1fr 3fr;
align-items: center;
height: 50px;
overflow: hidden;
}
.navbar img {
height: 16px;
width: auto;
justify-self: start;
margin-left: 20px;
}
.navbar ul {
list-style: none;
display: grid;
grid-template-columns: repeat(6,1fr);
justify-self: end;
}
.nav-item a {
color: #000;
font-size: 0.9rem;
font-weight: 400;
text-decoration: none;
transition: color 0.3s ease-out;
}
.nav-item a:hover {
color: #3498db;
}
/* SECTIONS */
.headline {
width: 100%;
height: 50vh;
min-height: 350px;
background: linear-gradient(rgba(0,0,0,0.3),rgba(0,0,0,0.7)), url('https://images.unsplash.com/photo-1435224668334-0f82ec57b605?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1yZWxhdGVkfDd8fHxlbnwwfHx8fA%3D%3D&w=1000&q=80');
background-size: cover;
display: flex;
flex-direction: column;
justify-content: center;
}
.features {
width: 100%;
height: auto;
background-color: #f1f1f1;
display: flex;
padding: 50px 20px;
justify-content: space-around;
}
.feature-container {
flex-basis: 30%;
margin-top: 10px;
}
.feature-container p {
color: #000;
text-align: center;
line-height: 1.4;
margin-bottom: 15px;
}
.feature-container img {
width: 100%;
margin-bottom: 15px;
}
/* SEARCH FUNCTION */
#search-icon {
font-size: 0.9rem;
margin-top: 3px;
margin-left: 15px;
transition: color 0.3s ease-out;
}
#search-icon:hover {
color: #3498db;
cursor: pointer;
}
.search {
transform: translate(-35%);
-webkit-transform: translate(-35%);
transition: transform 0.7s ease-in-out;
color: #3498db;
}
.no-search {
transform: translate(0);
transition: transform 0.7s ease-in-out;
}
.search-input {
position: absolute;
top: -4px;
right: -125px;
opacity: 0;
z-index: -1;
transition: opacity 0.6s ease;
}
.search-active {
opacity: 1;
z-index: 0;
}
input {
border: 0;
border-left: 1px solid #ccc;
border-radius: 0; /* FOR SAFARI */
outline: 0;
padding: 5px;
}
/* MOBILE MENU & ANIMATION */
.menu-toggle .bar{
width: 25px;
height: 3px;
background-color: #3f3f3f;
margin: 5px auto;
-webkit-transition: all 0.3s ease-in-out;
-o-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
}
.menu-toggle {
justify-self: end;
margin-right: 25px;
display: none;
}
.menu-toggle:hover{
cursor: pointer;
}
#mobile-menu.is-active .bar:nth-child(2){
opacity: 0;
}
#mobile-menu.is-active .bar:nth-child(1){
-webkit-transform: translateY(8px) rotate(45deg);
-ms-transform: translateY(8px) rotate(45deg);
-o-transform: translateY(8px) rotate(45deg);
transform: translateY(8px) rotate(45deg);
}
#mobile-menu.is-active .bar:nth-child(3){
-webkit-transform: translateY(-8px) rotate(-45deg);
-ms-transform: translateY(-8px) rotate(-45deg);
-o-transform: translateY(-8px) rotate(-45deg);
transform: translateY(-8px) rotate(-45deg);
}
/* KEYFRAME ANIMATIONS */
@-webkit-keyframes gradbar {
0% {
background-position: 0% 50%
}
50% {
background-position: 100% 50%
}
100% {
background-position: 0% 50%
}
}
@-moz-keyframes gradbar {
0% {
background-position: 0% 50%
}
50% {
background-position: 100% 50%
}
100% {
background-position: 0% 50%
}
}
@keyframes gradbar {
0% {
background-position: 0% 50%
}
50% {
background-position: 100% 50%
}
100% {
background-position: 0% 50%
}
}
/* Media Queries */
/* Mobile Devices - Phones/Tablets */
@media only screen and (max-width: 720px) {
.features {
flex-direction: column;
padding: 50px;
}
/* MOBILE HEADINGS */
h1 {
font-size: 1.9rem;
}
h2 {
font-size: 1rem;
}
p {
font-size: 0.8rem;
}
/* MOBILE NAVIGATION */
.navbar ul {
display: flex;
flex-direction: column;
position: fixed;
justify-content: start;
top: 55px;
background-color: #fff;
width: 100%;
height: calc(100vh - 55px);
transform: translate(-101%);
text-align: center;
overflow: hidden;
}
.navbar li {
padding: 15px;
}
.navbar li:first-child {
margin-top: 50px;
}
.navbar li a {
font-size: 1rem;
}
.menu-toggle, .bar {
display: block;
cursor: pointer;
}
.mobile-nav {
transform: translate(0%)!important;
}
/* SECTIONS */
.headline {
height: 20vh;
}
.feature-container p {
margin-bottom: 25px;
}
.feature-container {
margin-top: 20px;
}
.feature-container:nth-child(2) {
order: -1;
}
/* SEARCH DISABLED ON MOBILE */
#search-icon {
display: none;
}
.search-input {
display: none;
}
}
$("#search-icon").click(function() {
$(".nav").toggleClass("search");
$(".nav").toggleClass("no-search");
$(".search-input").toggleClass("search-active");
});
$('.menu-toggle').click(function(){
$(".nav").toggleClass("mobile-nav");
$(this).toggleClass("is-active");
});
This Pen doesn't use any external CSS resources.