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

202
Views
Cómo agregar un efecto de transición a los elementos de la lista de la barra de navegación después de hacer clic en el ícono de la hamburguesa

Estoy haciendo una pregunta muy específica que creo que es realmente fácil de solucionar, pero no sé cuál es el problema. Básicamente, estoy haciendo una barra de navegación receptiva, solo tiene 3 elementos de la lista UL, nada más, también tengo un ícono de hamburguesa para tamaños móviles, funciona perfectamente, cuando hago clic en él, aparecen los elementos de la lista, pero hay una cosa Ojalá fuera diferente. Cuando hago clic en el ícono, quiero que los elementos de mi lista aparezcan con una transición suave, simplemente aparecen directamente. Intenté agregar el método de transición al css pero no tengo idea de por qué no funciona. Aquí están las imágenes y el código css a continuación: Antes de hacer clic Después de hacer clic

 const menuBtn = document.querySelector(".menu-btn"); const navUL = document.querySelector(".nav-ul"); let menuOpen = false; menuBtn.addEventListener("click", () => { if(!menuOpen){ menuBtn.classList.add("open"); navUL.classList.add("show") menuOpen = true; }else { menuBtn.classList.remove("open"); navUL.classList.remove("show") menuOpen = false; } })
 nav ul { display: none; margin: 0; padding: 0; list-style: none; } .nav-ul.show { display: flex; padding-left: 1em; padding-top: 1em; } nav li { display: inline-block; margin: 1em; } nav a { font-weight: 900; text-decoration: none; text-transform: uppercase; font-size: 1rem; padding: 0.5em; color: #6F69AC; }
 <nav> <div class="menu-btn"> <div class="menu-btn_burger"> [BURGER ICON] </div> </div> <ul class="nav-ul"> <li><a href="">About</a></li> <li><a href="">Art</a></li> <li><a href="">Projects</a></li> </ul> </nav>

Cualquier ayuda sería apreciada <3

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Espero que pueda ayudarte.

CSS

 nav ul { display: flex; padding: 0 1em; margin: 0; list-style: none; } .nav-ul { max-width: 0; overflow: hidden; transition: all .3s ease; } nav li { display: inline-block; margin: 1em; } nav a { font-weight: 900; text-decoration: none; text-transform: uppercase; font-size: 1rem; padding: 0.5em; color: #6F69AC; }

JS

 const menuBtn = document.querySelector(".menu-btn"); const navUL = document.querySelector(".nav-ul"); let menuOpen = false; menuBtn.addEventListener("click", () => { if (!menuOpen) { menuBtn.classList.add("open"); navUL.style.maxWidth = navUL.scrollWidth + 'px'; menuOpen = true; } else { menuBtn.classList.remove("open"); navUL.style.maxWidth = null; menuOpen = false; } })

HTML

 <nav> <div class="menu-btn"> <div class="menu-btn_burger"> </div> </div> <div class="nav-ul"> <ul> <li><a href="">About</a></li> <li><a href="">Art</a></li> <li><a href="">Projects</a></li> </ul> </div> </nav>
about 4 years ago · Juan Pablo Isaza Report

0

  1. Puede agregar transición al ancho y alternar entre 0 y el ancho esperado.
  2. Puede agregar transición a la izquierda y alternar entre 0 y ancho negativo.
  3. Puede agregar transición a transform: translateX, y alternar entre 0 y -100%.

Puede eliminar otras propiedades de visualización y visibilidad para manipular su ocultamiento

 const menuBtn = document.querySelector(".menu-btn"); const navUL = document.querySelector(".nav-ul"); let menuOpen = false; menuBtn.addEventListener("click", () => { if(!menuOpen){ menuBtn.classList.add("open"); navUL.classList.add("show") menuOpen = true; }else { menuBtn.classList.remove("open"); navUL.classList.remove("show") menuOpen = false; } })
 nav ul { transform: translateX(-100%); margin: 0; padding: 0; list-style: none; overflow: hidden; transition: transform 0.5s; position: absolute; } .nav-ul.show { transform: translateX(0); padding-left: 1em; padding-top: 1em; } nav li { display: inline-block; margin: 1em; } nav a { font-weight: 900; text-decoration: none; text-transform: uppercase; font-size: 1rem; padding: 0.5em; color: #6F69AC; }
 <nav> <div class="menu-btn"> <div class="menu-btn_burger"> [BURGER ICON] </div> </div> <ul class="nav-ul"> <li><a href="">About</a></li> <li><a href="">Art</a></li> <li><a href="">Projects</a></li> </ul> </nav>

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!