import React, {useState} from 'react';
import './NavBar.css';
const NavBar = () => {
const [isOpen, setIsOpen] = useState(false);
const toggleNavbar = () => {
setIsOpen(!isOpen);
};
return (
<nav className={`navbar ${isOpen ? 'open' : ''}`}>
<div className='nav-container'>
<h1>LOGO</h1>
<div className='menu-icon' onClick={toggleNavbar}>
<div className={`bar ${isOpen ? 'open' : ''}`}></div>
<div className={`bar ${isOpen ? 'open' : ''}`}></div>
<div className={`bar ${isOpen ? 'open' : ''}`}></div>
</div>
<ul className={`nav-links ${isOpen ? 'open' : ''}`}>
<li>Home</li>
<li>About</li>
<li>Services</li>
<li>Contact Us</li>
</ul>
</div>
</nav>
)
}
export default NavBar;
Css:
.navbar {
background-color: #333;
color: #fff;
position: fixed;
width: 100%;
top: 0;
left: 0;
transition: transform 0.3s ease-in-out;
z-index: 1000;
}
.nav-container{
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.1rem 2rem;
}
.nav-links {
display: flex;
list-style: none;
padding: 0;
margin: 0;
}
.nav-links.open{
display: block;
}
.nav-links li {
margin-right: 20px;
}
h1 {
font-size: 2rem;
}
.menu-icon {
cursor: pointer;
display: none;
flex-direction: column;
justify-content: space-between;
height: 24px;
}
.bar {
background-color: #fff;
height: 3px;
width: 25px;
transition: transform 0.3s ease-in-out;
}
.open .bar:nth-child(1){
transform: rotate(-45deg) translate(-5px, 6px);
}
.open .bar:nth-child(2){
opacity: 0;
}
.open .bar:nth-child(3){
transform: rotate(45deg) translate(-5px, -6px);
}
@media (max-width: 600px) {
.menu-icon {
display: flex;
}
.nav-links{
display: none;
flex-direction: column;
position: absolute;
background-color: #333;
top: 100%;
left: 0;
width: 100%;
padding-left: 20px;
border-top: 2px solid #fff;
padding-top: 14px;
}
.nav-links li {
padding-bottom: 18px;
}
.nav-links .open {
display: flex;
}
}