Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

201
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda