Uso las transiciones CSS con bastante frecuencia ahora, pero me resulta limitado para tener acceso a la facilidad de entrada, salida, etc. La opción curva de bezier parece permitir el mayor control, pero incluso esto no le permite especificar una aceleración real ecuación que simularía el relajamiento elástico, etc. ¿Hay alguna otra opción o es necesario recurrir a javascript para realizar este tipo de animación?¿Es posible especificar una función de temporización personalizada para las transiciones de CSS?
Respuesta
Encontré que no hay forma de hacer una transición elástica con CSS puro. Sin embargo, puedes hacer trampa y hacer una animación CSS. Esto es lo que usa la manzana en su sitio:
@-webkit-keyframes open-1 {
from { opacity:0; -webkit-transform:translate3d(210px, -145px, 0); }
25% { opacity:1; -webkit-transform:translate3d(-15.6px, 4.1px, 0); }
30% { opacity:1; -webkit-transform:translate3d(-10.3px, 2.7px, 0); }
35% { opacity:1; -webkit-transform:translate3d(0, 0, 0); }
40% { opacity:1; -webkit-transform:translate3d(4.5px, -1.2px, 0); }
45% { opacity:1; -webkit-transform:translate3d(2.9px, -0.8px, 0); }
50% { opacity:1; -webkit-transform:translate3d(0, 0, 0); }
55% { opacity:1; -webkit-transform:translate3d(-1.3px, 0.3px, 0); }
60% { opacity:1; -webkit-transform:translate3d(-0.8px, 0.2px, 0); }
65% { opacity:1; -webkit-transform:translate3d(0, 0, 0); }
70% { opacity:1; -webkit-transform:translate3d(0.4px, -0.1px, 0); }
75% { opacity:1; -webkit-transform:translate3d(0.2px, -0.1px, 0); }
80% { opacity:1; -webkit-transform:translate3d(0, 0, 0); }
85% { opacity:1; -webkit-transform:translate3d(-0.1px, 0, 0); }
90% { opacity:1; -webkit-transform:translate3d(-0.1px, 0, 0); }
to { opacity:1; -webkit-transform:translate3d(0, 0, 0); }
}
Estas animaciones se utilizan en buena medida en la propia web de Apple: http://www.apple.com/mac/
Obviamente, esto es de gran alcance, hasta cierto punto - ya que las animaciones son porcentajes que pueda cambia fácilmente la duración y conserva el efecto.
Sin embargo, esto sigue siendo muy estático. Digamos que desea hacer clic en un botón y hacer que realice una animación de escala elástica. No hay problema, una animación se puede usar una y otra vez para cada botón. Pero supongamos que desea que un elemento ajuste elásticamente su posición al lugar donde el usuario hizo clic o tocó más recientemente en la pantalla. Bien, en este caso necesitaría recalcular dinámicamente los fotogramas clave y luego aplicar la animación al elemento.
En el momento de escribir esto, no sé si hay buenos ejemplos de generación dinámica de animaciones CSS sobre la marcha dentro de javascript. De hecho, probablemente justifique otra pregunta. Con todo, esta es la única forma pura de CSS que encontré para hacer una ecuación de aceleración compleja, como la flexibilización elástica puramente con CSS.
Puede usar Caesar para generar CSS para diferentes ecuaciones.
Gracias - esto parece el mejor hasta ahora, pero incluso en este caso - no es es posible hacer algo más complejo como una facilidad elástica sin javascript. –
, por el contrario, es :) Me gusta mucho la herramienta Caesar, pero si quieres transiciones hinchables o elásticas, mira esto: http://www.css3animationgenerator.com/ - ¡es un gran complemento para Caesar –
wow! gracias por esa gran referencia –
Sé que si usted está utilizando mootools que podría escribir su propia ecuación:
http://mootools.net/docs/core/Fx/Fx.Transitions
Clase: Fx.Transition
Esta clase sólo es útil para las matemáticas genios que quieren escribir sus propias ecuaciones de aceleración . Devuelve una función de transición Fx con los métodos 'easeIn', 'easeOut' y 'easeInOut'.
Quizás las otras bibliotecas como jquery o prototype tengan la misma clase, probablemente tengan algo similar.
¡Buena suerte!
Actualmente, no necesita una biblioteca de JavaScript para admitir funciones de aceleración complejas como bounce-ease-in o elastic-ease-out. Aquí está la herramienta de CSS3 Animación generador que genera los fotogramas clave para usted, y permite a 12 funciones de aceleración adicionales no son compatibles con la especificación del W3C:
Gracias Eric, pero eso es esencialmente lo mismo que mi respuesta. Esto usa javascript para generar una animación CSS de fotograma clave a través de un formulario web. Mi solución fue el mismo método, excepto que estoy usando javascript para generar declarativamente los fotogramas clave CSS en el documento en vivo. Hay ventajas/desventajas para ambos. Lo que esperaba era una curva basada en CSS que admitiera varios puntos de control. Eso nos permitiría pasar por alto esta generación de fotogramas clave de JavaScript. –
- 1. Transiciones CSS claras
- 2. Casos de uso para transiciones CSS y animaciones CSS
- 3. PolyFill/Shim para transiciones CSS y animaciones
- 4. brújula múltiples transiciones CSS
- 5. ¿Es posible especificar el nombre de la propiedad Index para utilizar para las listas en una convención nhibernate fluida?
- 6. Transiciones de CSS, las animaciones tienen un rendimiento terrible, comportamiento
- 7. ¿Es posible especificar el tipo de devolución de una función anónima en Scala?
- 8. ¿Es posible especificar el grosor de línea para "text-decoration: line-through"? en CSS?
- 9. ¿Es posible pasar variables a la función css de jquery?
- 10. ERLANG - Aplicaciones de temporización
- 11. Recreación de transiciones CSS3 Curva cúbica-Bezier
- 12. ¿Es posible especificar el registrador para ant dentro de build.xml?
- 13. transiciones css en elementos nuevos
- 14. ¿Es posible especificar opciones de formato para to_yaml en ruby?
- 15. ¿Es posible especificar el formato de visualización para un dijit.form.DateTextBox
- 16. ¿Es posible dar una prioridad de clase CSS sobre otra?
- 17. Transiciones de CSS3 dentro de jQuery .css()
- 18. transiciones CSS mezcla posicionamiento absoluto y relativo
- 19. Pruebas de temporización en TestNG
- 20. "Force Reflow" en transiciones CSS en Bootstrap
- 21. ¿Es posible usar RedirectToAction() dentro de una clase personalizada AuthorizeAttribute?
- 22. ¿Es posible crear una nueva propiedad css?
- 23. C# temporización de milisegundos
- 24. funciones de temporización
- 25. ¿Es posible la función "intrínseca personalizada" para x64 en lugar del montaje en línea?
- 26. ¿Cómo especificar el orden de las clases de CSS?
- 27. ¿Es posible especificar un std :: vector vacío como parámetro predeterminado?
- 28. VisualStateManager y las transiciones generadas
- 29. ¿Es posible especificar más de una sugerencia de tipo para un parámetro?
- 30. Es posible especificar dos páginas raíz en Rails (una para usuario anónimo otra para usuario conectado)
He creado un marco de JavaScript para hacer esto fácilmente a partir de ahora: https://github.com/jimjeffers/Sauce –