Вот настройка:
Код: Выделить всё
import { useState } from "react";
import styles from './Navbar.module.css';
export function Navbar() {
const [isActive, setIsActive] = useState(false);
const toggleActiveClass = () => {
setIsActive(!isActive);
console.log('isActive:', isActive); // Check if the state is toggling
console.log('styles:', styles); // Check if the styles are correctly imported
};
const removeActive = () => {
setIsActive(false);
};
return (
[url=#home]Dev. [/url]
[list]
[*]
[url=#home]Home[/url]
[*]
[url=#catalog]Catalog[/url]
[*]
[url=#all-products]All products[/url]
[*]
[url=#contact]Contact[/url]
[/list]
);
}
Код: Выделить всё
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
background-color: #333;
padding: 10px;
}
.logo {
color: white;
text-decoration: none;
}
.navMenu {
list-style: none;
display: flex;
flex-direction: row;
gap: 20px;
position: absolute;
top: 70px;
left: -100%;
transition: 0.7s ease-in-out;
background-color: aliceblue;
width: 100%;
padding: 10px;
}
.active {
left: 0; /* Make sure this is applied when active */
}
.navLink {
text-decoration: none;
color: black;
}
.hamburger {
display: none;
flex-direction: column;
cursor: pointer;
}
.bar {
width: 25px;
height: 3px;
background-color: #fff;
margin: 4px 0;
transition: 0.4s;
}
@media (max-width: 768px) {
.hamburger {
display: flex;
}
.navMenu {
flex-direction: column;
left: -100%; /* Initially off-screen */
position: absolute;
}
.navMenu.active {
left: 0; /* Slide in when active */
}
}
- Я проверил состояние с помощью console.log(isActive) и убедился, что
Состояние переключается правильно. - Я проверил импортированные классы CSS
с помощью console.log(styles) и подтвердил, что активный класс
импортирован. - Я гарантировал, что активный класс применяется
условно в JSX с помощью ${isActive ? style.active : ''}.
Когда я нажимаю на меню-гамбургер, активный класс должен быть применен к navMenu, что должно изменить значение свойства left с -100% на 0 и заставить меню выдвигаться вперед.
Текущее поведение:Несмотря на то, что состояние переключается и активный класс должен быть применен, меню не выдвигается, как ожидалось. Похоже, что активный класс не применяется к navMenu.
Вопросы:
- < li>Что-то не так с тем, как я применяю классы с использованием CSS
модулей в React? - Может ли проблема заключаться в том, как модули CSS работают в этой конкретной настройке, или это как-то связано с тем, как я обрабатываю состояние?
Подробнее здесь: https://stackoverflow.com/questions/790 ... avbar-menu
Мобильная версия