Parece que no puedo encontrar la sintaxis correcta para la taquigrafía de transición CSS con múltiples propiedades. Esto no hace nada:
.element {
-webkit-transition: height .5s, opacity .5s .5s;
-moz-transition: height .5s, opacity .5s .5s;
-ms-transition: height .5s, opacity .5s .5s;
transition: height .5s, opacity .5s .5s;
height: 0;
opacity: 0;
overflow: 0;
}
.element.show {
height: 200px;
opacity: 1;
}
Agrego la clase show con javascript. El elemento se vuelve más alto y visible, simplemente no hace la transición. Pruebas en los últimos Chrome, FF y Safari.
¿Qué estoy haciendo mal?
EDITAR: Solo para que quede claro, estoy buscando la versión abreviada para reducir mi CSS. Está lo suficientemente hinchado con todos los prefijos de proveedor. También amplió el código de ejemplo.
css
webkit
css-transitions
shorthand
Gregory Bolkenstijn
fuente
fuente
.5s
valores dobles después de loopacity
previsto?Respuestas:
Sintaxis:
Tenga en cuenta que la duración debe venir antes de la demora, si se especifica esta última.
Transiciones individuales combinadas en declaraciones abreviadas:
O simplemente haga la transición a todos:
Aquí hay un ejemplo sencillo . Aquí hay otro con la propiedad de retraso .
Editar: anteriormente enumerados aquí estaban las compatibilidades y los problemas conocidos relacionados
transition
. Eliminado para facilitar la lectura.En pocas palabras: solo úsalo. La naturaleza de esta propiedad es inigualable para todas las aplicaciones y la compatibilidad ahora está muy por encima del 94% a nivel mundial.
Si todavía quiere estar seguro, consulte http://caniuse.com/css-transitions
fuente
all
lugar de enumerar las propiedades específicas? Por ejemplo, si planeo hacer la transiciónbackground
ycolor
solo, ¿es mejor especificar ambos o simplemente usarlosall
? Además, dado que IE6-9 no admite transiciones e IE10 las admite sin prefijar, ¿hay alguna ventaja / desventaja en incluir lasms-transition:
directivas?ms-transition
, no sé de ninguna razón, ahora que IE10 está fuera, por qué alguien aún usaría enms-transition
lugar del estándartransition
. No causará ningún problema tener ambos, pero, especialmente en una hoja de estilo de transición pesada, hinchará su CSS. Más importante aún, el tamaño del archivo también se verá afectado.Si tiene varias propiedades específicas que desea hacer la transición de la misma manera (porque también tiene algunas propiedades que específicamente no desea hacer la transición, por ejemplo
opacity
), otra opción es hacer algo como esto (se omiten los prefijos por brevedad):La segunda declaración anula la
all
declaración de taquigrafía que se encuentra arriba y genera (ocasionalmente) un código más conciso.Manifestación
fuente
transition-property
anulación, sino también porque, por ejemplotransition-delay
, debe especificarse después de la taquigrafía (al menos en el kit web). En otras palabras, la forma abreviada implica untransition-delay
0 y poner un retardo independiente antes de que los taquigrafía lo pone a 0.transition: [props] [duration] [easing] [delay]
en todos los navegadores modernosYo que trabajo con esto:
fuente
Al tener el retraso de .5s en la transición de la propiedad de opacidad, el elemento será completamente transparente (y, por lo tanto, invisible) todo el tiempo que su altura esté en transición. Entonces, lo único que realmente verá es el cambio de opacidad. Entonces obtendrá el mismo efecto que dejar la propiedad de altura fuera de la transición:
"transición: opacidad .5s .5s;"
¿Es eso lo que quieres? Si no es así, y desea ver la transición de altura, no puede tener una opacidad de cero durante todo el tiempo que está en transición.
fuente
Esto me ayudó a comprender / simplificar, solo lo que necesitaba animar:
~ Esto se aplica a todas las propiedades de transición (duración, función de sincronización de transición, etc.) dentro de la clase '.base'
fuente
Creo que funciona con esto:
fuente