Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

125
Views
Lista de visualización en la página o en el menú del cajón según el ancho de la pantalla

Tengo un menú que se muestra como un menú de hamburguesa/cajón cuando el ancho de la pantalla es inferior a cierta cantidad y estoy usando resorte de reacción para deslizar ese menú en la pantalla cuando se hace clic en el "icono de hamburguesa". Mi problema es que el <ul> está dentro de ese <animated.div> de react-springs, por lo que cuando el tamaño de la pantalla es más ancho y el menú de hamburguesas/cajón está oculto, el <ul> con los elementos de la lista se oculta con él, lo que No quiero, quiero que el menú se muestre normalmente en página (sin cajón) cuando la pantalla es más ancha. ¿Hay alguna manera de lograr esto sin tener que crear dos <ul> con los mismos <li> dos veces, uno dentro de <animated.div> que se muestra en un menú de cajón en pantallas más estrechas y otro que se muestra en la página? en pantallas más anchas?

React.js/JSX:

 return ( //State of menuVisible starts off as false <FontAwesomeIcon className="menuBarIcon" icon={faBars} onClick={() => setMenuVisible(!menuVisible)}/> {menuTransitions( (styles, item) => item && <animated.div style={styles} className="menu"> <ul> <li><a>Menu Item One</a></li> <li><a>Menu Item Two</a></li> <li><a>Menu Item Three</a></li> <li><a>Menu Item Four</a></li> <li><a>Menu Item Five</a></li> </ul> </animated.div> )} );

CSS:

 //Wider screens .menuBarIcon { display: none; } @media (max-width: 1080px) { //Narrower screens .menuBarIcon { display: inline; float: right; padding: 10px; margin: 25px; } .menu { position: fixed; top: 0; left: 0; width: 320px; height: 100%; } }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Lo resolví, lo que hice fue primero tener el <ul> fuera del <animated.div> para que ahora se muestre normalmente en pantallas más anchas. Luego agregué un operador ternario al <ul> basado en el estado de menuVisible para que alternara entre dos clases, una que ocultaría el <ul> y otra que lo mostraría. Luego, para colocarlo dentro del menú del cajón, simplemente agregué el CSS de la clase de menu al <ul> en la consulta de medios para pantallas más estrechas.

React.js/JSX:

 return ( <FontAwesomeIcon className="menuBarIcon" icon={faBars} onClick={() => setMenuVisible(!menuVisible)}/> {menuTransitions( (styles, item) => item && <animated.div style={styles} className="menu"> </animated.div> )} //Class alternates between the two based on condition of the state of menuVisible <ul className={menuVisible ? "menuActive" : "menuInactive"}> <li><a>Menu Item One</a></li> <li><a>Menu Item Two</a></li> <li><a>Menu Item Three</a></li> <li><a>Menu Item Four</a></li> <li><a>Menu Item Five</a></li> </ul> );

CSS:

 @media (max-width: 1080px) { //Narrower screens .menu { position: fixed; top: 0; left: 0; width: 320px; height: 100%; } ul { //Added same CSS as .menu class to Ul to position the list within the drawer menu position: fixed; top: 0; left: 0; width: 280px; //width is different to compensate for padding in li height: 100% flex-direction: column; } .menuActive { //Ul displays normally when menuVisible state is true display: block; } .menuInactive { //Ul is hidden when menuVisible state is false display: none; } }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!