Tengo un problema con una animación CSS3.
.child {
opacity: 0;
display: none;
-webkit-transition: opacity 0.5s ease-in-out;
-moz-transition: opacity 0.5s ease-in-out;
transition: opacity 0.5s ease-in-out;
}
.parent:hover .child {
opacity: 0.9;
display: block;
}
Este código solo funciona si elimino el cambio de display
.
Quiero cambiar la pantalla justo después del desplazamiento, pero la opacidad debe cambiarse usando la transición.
Respuestas:
Según la respuesta de Michaels, este es el código CSS real que se debe usar
fuente
Puedes hacerlo con animaciones CSS:
fuente
Si es posible, utilice
visibility
lugar dedisplay
Por ejemplo:
fuente
Esta solución funciona:
definir un "fotograma clave":
Utilice este "fotograma clave" en "hover":
fuente
Usé esto para lograrlo. Se desvanecen al pasar el mouse, pero no ocupan espacio cuando se ocultan, ¡perfecto!
fuente
Cambié un poco pero el resultado es hermoso.
Gracias a todos.
fuente
visibility: hidden;
a .child /visibility:visible;
al hover y esto debería solucionar el problema del lector de pantallaHay otro buen método para hacer esto usando eventos de puntero:
Desafortunadamente, esto no es compatible con IE10 y versiones anteriores.
fuente
Yo tuve el mismo problema. Intenté usar animaciones en lugar de transiciones, como sugirieron @MichaelMullany y @Chris, pero solo funcionó para navegadores webkit incluso si copiaba y pegaba con los prefijos "-moz" y "-o".
Pude solucionar el problema usando en
visibility
lugar dedisplay
. Esto funciona para mí porque mi elemento hijo esposition: absolute
, por lo que el flujo de documentos no se ve afectado. También podría funcionar para otros.Así es como se vería el código original usando mi solución:
fuente
Si está activando el cambio con JS, digamos al hacer clic, hay una buena solución.
Verá que el problema ocurre porque la animación se ignora en la pantalla: ningún elemento, pero el navegador aplica todos los cambios a la vez y el elemento nunca se muestra: bloque mientras no está animado al mismo tiempo.
El truco consiste en pedirle al navegador que renderice el fotograma después de cambiar la visibilidad, pero antes de activar la animación.
Aquí hay un ejemplo de JQuery:
fuente
En elementos absolutos o fijos, también puede usar z-index:
Otros elementos deberían tener un índice z entre -100 y 100 ahora.
fuente
type=password
campos. No es visible.Lo sé, esto no es realmente una solución para tu pregunta, porque pides
Mi enfoque resuelve una pregunta más general, pero tal vez este fue el problema de fondo que debería resolverse usando
display
en combinación conopacity
.Mi deseo era sacar el Elemento del camino cuando no es visible. Esta solución hace exactamente eso: mueve el elemento fuera de la distancia, y esto se puede usar para la transición:
Este código no contiene prefijos de navegador ni trucos de compatibilidad con versiones anteriores. Simplemente ilustra el concepto de cómo se aleja el elemento ya que ya no se necesita.
La parte interesante son las dos definiciones de transición diferentes. Cuando el puntero del mouse se desplaza sobre el
.parent
elemento, el.child
elemento debe colocarse en su lugar inmediatamente y luego se cambiará la opacidad:Cuando no hay desplazamiento, o el puntero del mouse se movió fuera del elemento, uno tiene que esperar hasta que el cambio de opacidad haya terminado antes de que el elemento pueda moverse fuera de la pantalla:
Alejar el objeto será una alternativa viable en el caso de que la configuración
display:none
no rompa el diseño.Espero haber dado en el clavo con esta pregunta, aunque no la he respondido.
fuente
Una cosa que hice fue establecer el margen del estado inicial en algo como "margin-left: -9999px" para que no aparezca en la pantalla, y luego restablecer "margin-left: 0" en el estado de desplazamiento. Manténgalo "display: block" en ese caso. Me hizo el truco :)
Editar: ¿Guardar el estado y no volver al estado de desplazamiento anterior? Ok, aquí necesitamos JS:
fuente
Para tener animación en ambos sentidos onHoverIn / Out hice esta solución. Espero que ayude a alguien
fuente
CÓMO ANIMAR LA OPACIDAD CON CSS:
este es mi código:
el código CSS
o consulte este archivo de demostración
fuente
display
propiedad simplemente fue eliminada.display:
no es transitable. Probablemente necesitará usar jQuery para hacer lo que quiera hacer.fuente