Задача просто до безобразия: При клике на кнопку burger должен открываеться сайдбар с навигацией. Функционал сделал, но не работает анимация. Задаю ее через transition в css свойствах компонента, но он не работает. Подскажите что делать, весь день убил, чтобы понять в чем дело.
JS-код:
function Header() {
const [isMenuActive, setMenuActive] = useState(false);
const togle = ()=> setMenuActive(!isMenuActive);
// кнопка открытия меню
function OpenMenuBtn() {
return (
<button onClick={togle} className='menu-btn'>
<img className='menu-img' src="./images/menu-ico.svg" alt="" />
</button>
);
}
// кнопка закрытия меню
function CloseMenuBtn() {
return (
<button onClick={togle} className='close-menu-btn'>X</button>
);
}
// компонент сайбара
function MenuNav() {
return (
<div className = {isMenuActive ? 'menu active' : "menu"}>
<div className="header__nav">
<CloseMenuBtn />
<p className='header__nav-link' href="#">Home</p>
<p className='header__nav-link' href="#">About</p>
<p className='header__nav-link' href="#">Services</p>
<p className='header__nav-link' href="#">Gallery</p>
</div>
</div>
);
}
return (
<div className='header'>
<div className='container'>
<div className="header__inner">
<OpenMenuBtn />
<MenuNav />
</div>
</div>
</div>
);
}
export default Header;
SCSS:
.menu {
background: rgba(0, 0, 0, 0.13);
position: absolute;
transform: translateX(-100%);
left: 0px;
top: 0px;
width: 100%;
height: 100vh;
transition: 0.3s all;
}
.menu.active{
transition: 0.3s all;
transform: translateX(0px);
}
&__nav {
padding: 20px;
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
height: 100%;
width: 250px;
background-color: rgb(253, 238, 220);
&-link {
margin-right: 0px;
margin-bottom: 30px;
}
}