Je suis nouveau pour réagir. J'essaye de faire une navigation dans mon en-tête. J'utilise bulma css:
import React,{Component} from 'react' import {NavLink} from 'react-router-dom'; import style from './style.css'; class Header extends Component{ render(){ return ( <React.Fragment> <nav className="navbar is-fixed-top" role="navigation" aria-label="main navigation"> <div className="navbar-brand"> <a href="/" className="navbar-item" to="/"> <img src="" alt="" width={112} height={28}/> </a> <a role="button" className="navbar-burger burger " aria-label="menu" aria-expanded="false" data-target="mainNavbar"> <span aria-hidden="true"></span> <span aria-hidden="true"></span> <span aria-hidden="true"></span> </a> </div> <div id="mainNavbar" className="navbar-menu"> <div className="navbar-start"> <NavLink exact activeClassName={style.active} to="/" className="navbar-item"> Home </NavLink> <NavLink activeClassName={style.active} to="/films" className="navbar-item"> Films </NavLink> </div> </div> </nav> </React.Fragment> ); } } export default Header;
Et j'importe le fichier bulma comme ceci:
import 'bulma/css/bulma.css';
Cela fonctionne pour la plupart des css mais pas avec menu burger, le menu n'est pas réduit lorsque je clique sur le bouton burger
Voici mon code d'en-tête:
"bulma": "^0.7.4",
Le
cible de données
L'attribut sur le bouton burger ne déclenche pas le menu. Veuillez me faire savoir ce que je fais de mal. Merci
3 Réponses :
Lorsque vous cliquez sur un hamburger, «navbar-menu» devrait être «navbar-menu is-active». Dans le cas contraire, vous devez également supprimer "is-active".
Bulma n'a pas d'événement de bascule intégré, vous devez le créer manuellement en ajoutant la classe "is-active" dans "navbar-burger" et "navbar-menu" ici, j'ai réussi cela avec React Hooks
<nav className="navbar" role="navigation" aria-label="main navigation"> <div className="navbar-brand"> <a onClick={() => { setisActive(!isActive); }} role="button" className={`navbar-burger burger ${isActive ? "is-active" : ""}`} aria-label="menu" aria-expanded="false" data-target="navbarBasicExample" > <span aria-hidden="true"></span> <span aria-hidden="true"></span> <span aria-hidden="true"></span> </a> </div> <div id="navbarBasicExample" className={`navbar-menu ${isActive ? "is-active" : ""}`} > <div className="navbar-start"> <a className="navbar-item">Home</a> <a className="navbar-item">Documentation</a> </div> </div> </nav>
const [isActive, setisActive] = React.useState(false);
Comme indiqué dans une autre réponse, des js supplémentaires sont nécessaires pour faire fonctionner le menu burger de Bulma. Voici comment je l'ai fait. La clé dans toggleBurgerMenu
. De plus, toggleBurgerMenu
doit être spécifié dans l'événement onClick
de chaque navbar-item
afin que le menu burger se ferme après avoir cliqué sur un élément de menu.
import React from 'react'; import { Link } from 'react-router-dom'; const Navigation = (props) => { function toggleBurgerMenu() { document.querySelector('.navbar-menu').classList.toggle('is-active'); } return ( <nav className="navbar" role="navigation" aria-label="main navigation"> <div className="navbar-brand"> <Link to="/" className="navbar-item">React App</Link> <a role="button" className="navbar-burger burger" aria-label="menu" aria-expanded="false" data-target="navbarBasic" onClick={toggleBurgerMenu}> <span aria-hidden="true"></span> <span aria-hidden="true"></span> <span aria-hidden="true"></span> </a> </div> <div id="navbarBasic" className="navbar-menu"> <div className="navbar-start"> <Link to="/about" className="navbar-item" onClick={toggleBurgerMenu}>About</Link> <Link to="/contact" className="navbar-item" onClick={toggleBurgerMenu}>Contact</Link> <Link to="/notes" className="navbar-item" onClick={toggleBurgerMenu}>Notes</Link> </div> </div> </nav> ); } export default Navigation;
Bulma ne fournit pas de code js. consultez la section bascule javascript dans la doc
@MaximeB im utilisant l'attribut data-target, a-t-il vraiment besoin de code js?