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

125
Vistas
Animar la altura del rect en la primera carga y al pasar el mouse / hacia afuera

es la primera vez que uso Vue.js y necesito hacer una animación muy simple en la primera carga del componente.

Este es mi punto de partida :

 <template> <div id="app"> <div class="rect" /> </div> </template> <script> export default { name: "App", components: {}, }; </script> <style lang="scss"> #app { border: 2px solid black; width: 200px; height: 300px; } #app:hover { .rect { background-color: tomato; height: 0%; } } .rect { transition: all 1s ease; background-color: tomato; width: 100%; height: 100%; } </style>

Ahora, quiero que en la primera carga, la altura del rectángulo rojo pase de 0% a 100% en 2 segundos y luego debería comportarse como ahora, de modo que al pasar el mouse, la altura se convierta en 0, al pasar el mouse fuera 100%. Para hacerlo, creo una variable isFirstLoad y cambio entre las dos nuevas clases height-0 y height-100 .

Aquí el código:

 <template> <div id="app"> <div class="rect" :class="{ 'height-100': isFirstLoad }" /> </div> </template> <script> export default { name: "App", components: {}, data: function () { return { isFirstLoad: true, }; }, mounted() { setTimeout(() => { this.isFirstLoad = false; }, 2000); }, }; </script> <style lang="scss"> #app { border: 2px solid black; width: 200px; height: 300px; .height-0 { height: 0%; } .height-100 { height: 100%; } } #app:hover { .rect { background-color: tomato; height: 0%; } } .rect { transition: all 1s ease; background-color: tomato; width: 100%; // height: 100%; } </style>

Funciona en la primera carga, pero luego, la altura recta siempre es 0%. Supongo que porque establezco height-0 siempre. ¿Cómo puedo arreglar?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Prueba como el siguiente fragmento:

 new Vue({ el: '#app', data() { return { isFirstLoad: true, } }, methods: { setHeight(toggle) { this.isFirstLoad = toggle; } }, mounted() { setTimeout(() => { this.isFirstLoad = false; }, 2000); } }) Vue.config.productionTip = false Vue.config.devtools = false
 #app { border: 2px solid black; width: 200px; height: 300px; } #app .height-0 { height: 0%; } #app .height-100 { height: 100%; } #app:hover .rect { background-color: tomato; } .rect { transition: all 1s ease; background-color: tomato; width: 100%; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app" @mouseover="setHeight(true)" @mouseleave="setHeight(false)"> <div class="rect" :class="isFirstLoad ? 'height-100' : 'height-0'"> </div> </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