Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

193
Vistas
Hacer que las opciones desplegables inicien la función JS

Tengo un fragmento de HTML/CSS aquí: https://codepen.io/trudeau_sucks123/pen/PoOyrzK para un menú desplegable que se expande hacia arriba. Me gustaría iniciar una función JS al hacer clic en una de las opciones, pero hacerlo a través de un botón parece crear un resultado realmente extraño/feo. ¿Cómo puedo hacer que esto aparezca normalmente? (Tenga en cuenta que excluí la parte JS porque esa parte está bien, el problema es realmente cómo parece todo)

Además, las opciones que aparecen al pasar el mouse no están alineadas por algún motivo y parece que no puedo solucionarlo.

HTML:

 <div> <ul class='menu--main_toggle'> <li>More <ul class='sub-menu'> <li><button onclick="toggleA()" id="btn_scroller"></button>Toggle A</li> <li><button onclick="toggleB()" id="btn_scroller"></button>Toggle B</li> <li><button onclick="toggleC()" id="btn_scroller"></button>Toggle C</li> </ul> </li> </ul> </div>

CSS:

 .menu--main_toggle { display: block; position: fixed; bottom: 10px; /* Place the button at the bottom of the page */ left: 10px; /* Place the button 30px from the left */ z-index: 99; /* Make sure it does not overlap */ list-style-type: none; } .menu--main_toggle ul { list-style: none; } .menu--main_toggle li { list-style: none; display: inline-block; position: relative; cursor: pointer; padding: 15px 20px; background-color: #1f3469; margin-right: -4px; /* border-radius: 10px; Rounded corners */ color: white; /* Text color */ } .menu--main_toggle li:hover { background-color: #2baae2; } .menu--main_toggle li:hover .sub-menu { max-height: 300px; visibility: visible; bottom: 100%; transition: all 0.4s linear; } .menu--main_toggle .sub-menu { display: block; visibility: hidden; position: absolute; left: 0; box-shadow: none; max-height: 0; width: 150px; overflow: hidden; } .menu--main_toggle .sub-menu li { display: block; list-style-type: none; }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

  1. Elimine el <button> , causan el estilo 'feo', mueva el onclick al <li>
  2. En lugar de crear 3 funciones toggleX , solo use 1 y obtenga el elemento en el que se hizo clic usando event.target
  3. La 'desalineación' es causada por un padding en el submenú. Elimine eso usando padding: 0 en .sub-menu

 function toggle() { console.log('Toggle', event.target); }
 .menu--main_toggle { display: block; position: fixed; bottom: 10px; /* Place the button at the bottom of the page */ left: 10px; /* Place the button 30px from the left */ z-index: 99; /* Make sure it does not overlap */ list-style-type: none; } .menu--main_toggle ul { list-style: none; } .menu--main_toggle li { list-style: none; display: inline-block; position: relative; cursor: pointer; padding: 15px 20px; background-color: #1f3469; margin-right: -4px; /* border-radius: 10px; Rounded corners */ color: white; /* Text color */ } .menu--main_toggle li:hover { background-color: #2baae2; } .menu--main_toggle li:hover .sub-menu { max-height: 300px; visibility: visible; bottom: 100%; transition: all 0.4s linear; } .menu--main_toggle .sub-menu { display: block; visibility: hidden; position: absolute; left: 0; box-shadow: none; max-height: 0; width: 150px; overflow: hidden; } .menu--main_toggle .sub-menu li { display: block; list-style-type: none; } .sub-menu { padding: 0; }
 <div> <ul class='menu--main_toggle'> <li>More <ul class='sub-menu'> <li onclick="toggle()" id="btn_scroller">Toggle A</li> <li onclick="toggle()" id="btn_scroller">Toggle B</li> <li onclick="toggle()" id="btn_scroller">Toggle C</li> </ul> </li> </ul> </div>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda