Este grupo de trabajo ha estado mucho tiempo investigando la resolución a tu pregunta, te dejamos la resolución de modo que deseamos servirte de mucha ayuda.
Esto es un tecnología experimental
Verifique cuidadosamente la tabla de compatibilidad del navegador antes de usarlo en producción.
Element.animate()
, KeyframeEffect.KeyframeEffect()
, y KeyframeEffect.setKeyframes()
todos aceptan objetos formateados para representar un conjunto de fotogramas clave. Hay varias opciones para este formato, que se explican a continuación.
Sintaxis
Hay dos formas diferentes de formatear fotogramas clave:
-
Un
array
de objetos (fotogramas clave) que constan de propiedades y valores sobre los que iterar. Este es el formato canónico devuelto por elgetKeyframes()
método.element.animate([// from opacity:0, color:"#fff",// to opacity:1, color:"#000"],2000);
Las compensaciones para cada fotograma clave se pueden especificar proporcionando un
offset
valor.element.animate([ opacity:1, opacity:0.1, offset:0.7, opacity:0],2000);
Nota:
offset
los valores, si se proporcionan, deben estar entre 0.0 y 1.0 (inclusive) y ordenados en orden ascendente.No es necesario especificar un desplazamiento para cada fotograma clave. Los fotogramas clave sin un desplazamiento especificado se espaciarán uniformemente entre fotogramas clave adyacentes.
La suavidad a aplicar entre fotogramas clave se puede especificar proporcionando una
easing
valor como se ilustra a continuación.element.animate([ opacity:1, easing:'ease-out', opacity:0.1, easing:'ease-in', opacity:0],2000);
En este ejemplo, la aceleración especificada solo se aplica desde el fotograma clave donde se especifica hasta el siguiente fotograma clave. Alguna
easing
valor especificado en eloptions
El argumento, sin embargo, se aplica en una sola iteración de la animación, durante toda la duración. -
Un
object
conteniendo key-pares de valores que constan de la propiedad de animar y unarray
de valores sobre los que iterar.element.animate( opacity:[0,1],// [ from, to ] color:["#fff","#000"]// [ from, to ],2000);
Usando este formato, el número de elementos en cada array no necesita ser igual. Los valores proporcionados se espaciarán de forma independiente.
element.animate( opacity:[0,1],// offset: 0, 1 backgroundColor:["red","yellow","green"],// offset: 0, 0.5, 1,2000);
El especial keys
offset
,easing
, ycomposite
(descrito a continuación) se puede especificar junto con los valores de propiedad.element.animate( opacity:[0,0.9,1], offset:[0,0.8],// Shorthand for [ 0, 0.8, 1 ] easing:['ease-in','ease-out'],,2000);
Después de generar un conjunto adecuado de fotogramas clave a partir de las listas de valores de propiedad, cada desplazamiento proporcionado se aplica al fotograma clave correspondiente. Si hay valores insuficientes o si la lista contiene
null
valores, los fotogramas clave sin compensaciones especificadas se espaciarán uniformemente como con el array formato descrito anteriormente.Si hay muy pocos
easing
ocomposite
valores, la lista correspondiente se repetirá según sea necesario.
Implícito hacia / desde fotogramas clave
En las versiones más recientes del navegador, puede establecer un estado inicial o final solo para una animación (es decir, un único fotograma clave), y el navegador inferirá el otro extremo de la animación si puede. Por ejemplo, considere esta simple animación – el objeto Keyframe se ve así:
let rotate360 =[ transform:'rotate(360deg)'];
Solo hemos especificado el estado final de la animación y el estado inicial está implícito.
Atributos
Los fotogramas clave pueden especificar pares de propiedad-valor para cualquiera de los animatable css properties
. Los nombres de las propiedades se especifican usando camel-case, por ejemplo background-color
se convierte en backgroundColor
y background-position-x
se convierte en backgroundPositionX
. Valores taquigráficos como margin
también están permitidos.
Dos propiedades CSS excepcionales son:
float
, que debe escribirse comocssFloat
ya que “flotar” es una palabra reservada en JavaScript. Es solo para referencia aquí, esto no tendrá ningún efecto en la animación ya que “float” no es una propiedad CSS animable.offset
, que debe escribirse comocssOffset
ya que “desplazamiento” representa el desplazamiento del fotograma clave como se describe a continuación.
El siguiente especial attributes también se puede especificar:
- compensar
-
El desplazamiento del fotograma clave especificado como un número entre
0.0
y1.0
inclusive onull
. Esto es equivalente a especificar los estados de inicio y finalización en porcentajes en hojas de estilo CSS usando@keyframes
. Si este valor esnull
o falta, el fotograma clave estará espaciado uniformemente entre fotogramas clave adyacentes. - aliviar
-
los función de temporización utilizado desde este fotograma clave hasta el siguiente fotograma clave de la serie.
- compuesto
-
los
KeyframeEffect.composite
operación utilizada para combinar los valores especificados en este fotograma clave con el valor subyacente. Esto seráauto
si se está utilizando la operación compuesta especificada en el efecto.
Especificaciones
Especificación | Estado | Comentario |
---|---|---|
Animaciones web La definición de ‘formatos de objeto de fotogramas clave’ en esa especificación. |
Borrador de trabajo | Definición inicial |
Compatibilidad del navegador
Escritorio | Móvil | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Cromo | Borde | Firefox | explorador de Internet | Ópera | Safari | WebView Android | Chrome Android | Firefox para Android | Opera Android | Safari en IOS | Internet de Samsung | |
Keyframe_Formats |
36 | 79 | 48 | No | 23 | 13.1 Sí | 37 | 36 | 48 | 24 | 13,4 | 3,0 |
composite_option |
79 | 79 | 8063-79 | No | 66 | No | No | 79 | 63-79 | No | No | No |
id_option |
50 | 79 | 48 | No | 37 | No | 50 | 50 | 48 | 37 | No | 5,0 |
implicit_tofrom |
Actualmente solo Chrome Canary | No | 75 | No | No | 13.1 La implementación parece algo con errores. Habrá más información cuando esté disponible. | No | Actualmente solo Chrome Canary | No | No | 13.4 La implementación parece algo defectuosa. Habrá más información cuando esté disponible. | No |
iterationcomposite_option |
No | No | 8063-79 | No | No | No | No | No | 63-79 | No | No | No |
pseudoElement_option |
81 Se devuelve un objeto de animación válido pero el pseudoelemento objetivo no se anima visualmente. | 81 Se devuelve un objeto de animación válido pero el pseudoelemento objetivo no se anima visualmente. | 75 | No | 68 Se devuelve un objeto de animación válido pero el pseudoelemento objetivo no se anima visualmente. | No | No | 81 Se devuelve un objeto de animación válido pero el pseudoelemento objetivo no se anima visualmente. | No | No | No | No |
Las tablas BCD solo se cargan en el navegador
Ver también
- API de animaciones web
Element.animate()
KeyframeEffect.KeyframeEffect()
KeyframeEffect.setKeyframes()
Recuerda algo, que tienes la capacidad de añadir una puntuación acertada .