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

151
Visualizações
Suavizar una desaparición aguda para div transitorio

He creado un cuadro para alternar entre aparecer y desaparecer a través de un botón de alternancia.

Los problemas son:

  • La primera vez, la altura que aparece es nítida y no uniforme.
  • La altura de desaparición está ocurriendo aguda y al final en lugar de suave.

No soy un experto en la web. Todo lo que he escrito es lo que he obtenido de diferentes lugares y reunido. Siéntase libre de corregir cualquier otro error de CSS/JS también. Pero los problemas anteriores son lo que estoy buscando principalmente.

 function toggle_elem() { var elem = document.getElementById('elemid'); if(elem.style.display == 'none') { elem.style.display = 'block'; window.setTimeout(function(){ elem.style.opacity = 1; elem.style.transform = 'scale(1)'; elem.style.height = '100px'; },0); } else { elem.style.transform = 'scale(0)'; window.setTimeout(function(){ elem.style.display = 'none'; elem.style.height = '0'; }, 300); } }
 #elemid { border: 1px solid black; opacity: 0; transform: scale(0); transition: height 0.3s, width 0.3s, padding 0.3s, visibility 0.3s, 0.3s ease opacity, opacity 0.3s ease-out, 0.3s ease transform; }
 <div> <button onclick="toggle_elem()">Toggle</button> </div> <div id="elemid" style="display:none">aaaaa</div> <div> <button >Next button</button> </div>

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Ya casi estás allí para la transición suave en la animación que desaparece. Lo unico que tienes que modificar es esto

 elem.style.transform = 'scale(0)'; //this is to support the css animation elem.style.height = '0'; //move your height set outside of `setTimeout` window.setTimeout(function(){ //only set `display` none after the animation completed elem.style.display = 'none'; }, 300);

código completo

 function toggle_elem() { var elem = document.getElementById('elemid'); if (elem.style.display == 'none') { elem.style.display = 'block'; window.setTimeout(function() { elem.style.opacity = 1; elem.style.transform = 'scale(1)'; elem.style.height = '100px'; }, 0); } else { elem.style.transform = 'scale(0)'; elem.style.height = '0'; window.setTimeout(function() { elem.style.display = 'none'; }, 300); } }
 #elemid { border: 1px solid black; opacity: 0; transform: scale(0); transition: height 0.3s, width 0.3s, padding 0.3s, visibility 0.3s, 0.3s ease opacity, opacity 0.3s ease-out, 0.3s ease transform; }
 <div> <button onclick="toggle_elem()">Toggle</button> </div> <div id="elemid" style="display:none">aaaaa</div> <div> <button>Next button</button> </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