Hay tanto que se pueden lograr de forma nativa en el navegador utilizando CSS3 o API de animaciones web, en JavaScript. Las animaciones y transiciones simples son adecuadas para CSS3, mientras que las animaciones más complejas deben realizarse utilizando JavaScript. (Si está creando un sitio sin código, necesita un Creador de sitios web .)
El problema con la API de animación web es el soporte del navegador y el conjunto de características actual. Siendo una especificación bastante joven, esto mejorará en los próximos años.
Para combatir esta función y déficit de soporte de navegador, podemos recurrir a las bibliotecas de animación, como Grenessock (GSAP). GSAP nos da la capacidad de crear animaciones complejas y múltiples líneas de tiempo, con la capacidad de animar casi cualquier elemento o pareja de propiedad / valor, todos logrados con una sintaxis simple e intuitiva.
En este tutorial vamos a usar la Biblioteca GSAP para crear algunas animaciones. La animación principal y más compleja que estaremos creando será la transición de la escena desde el día a la noche y veremos con la facilidad con que podemos encadenar juntos múltiples transiciones para crear animaciones complicadas. También crearemos algunas animaciones simples que se ejecutarán constantemente.
Si desea más opciones para su proyecto de animación, consulte nuestra compilación de la El mejor software de diseño gráfico gratuito . ¿Agregar animación a un sitio web complejo? Necesitarás un soporte Alojamiento web Servicio.
Descargar los archivos Para este tutorial.
Para empezar, necesitamos horquillar el [sesenta y cinco] Pluma de grenessock
GSAP ofrece dos tipos de línea de tiempo: timelinelite y timelinemax. La versión TimelineMax ofrece acceso a características adicionales, como la capacidad de repetir las animaciones, así como jugarlas a la inversa entre otras. Nuestra primera línea de tiempo será el agua, que repetiremos infinitamente y hacia atrás de un lado a otro.
var animation_water = nuevo timelinemax ({
Repetir: -1,
Yoyo: verdadero
});
Para animar el agua, tenemos otro camino en nuestra SVG, oculto con una opacidad '0'. Vamos a utilizar el morphsvg Plugin para transformar nuestra ruta de agua original en la nueva trayectoria de agua. Moveremos el elemento de agua '12px' hacia abajo en el eje y. Los dos números al final de la propiedad representan el retraso y las horas de inicio, respectivamente.
Animation_water
.to ("# agua", 2, {
Y: 12,
MORPHSVG: "# Agua-2",
Facilidad: lineal.easenone
}, 0, 0)
;
Dado que estaremos reutilizando una serie de propiedades y valores varias veces que vamos a crear variables para estas propiedades.
var animation_ase = linear.easenone;
La biblioteca GSAP nos ofrece la capacidad de obtener una serie de propiedades de cualquier línea de tiempo determinada. Podemos registrarlos en la consola para asegurarse de que todo esté funcionando, ya que esperamos que lo haga.
Console.log (
'Animation_water DURACIÓN:'
+ Animation_water.dure ()
.tofixed (2)
);
Para cada elemento, deseamos animar por separado y constantemente, necesitamos crear una nueva línea de tiempo. También queremos registrar esa línea de tiempo en la consola a medida que avanzamos.
var animation_cloud = nuevo timelinemax ({
Repetir: -1,
Yoyo: cierto
});
console.log ('\ n' +
...
animation_cloud.dure (). Tofixed (2) + '\ n'
);
Ahora que tenemos nuestra línea de tiempo lista, podemos crear nuestra animación en la nube. La sección de animación que toma las nuevas propiedades puede manejar múltiples pares de propiedades / valor separadas con comas.
Nuestra animación en la nube solo necesita ser sutil, por lo que solo necesitamos cambiar los valores por una pequeña cantidad.
animación_cloud
.to ("# nube", 3, {x: -2, y: 1, escala: 0.95, rotación: 1, facilidad: animación_ase}, 0, 0)
;
A continuación, comenzaremos a crear nuestra animación diurna. Crearemos una variable para el tiempo de ciclo y el día. El establecimiento 'Yoyo' en GSAP también nos permite retrasar la animación antes de repetir.
var day_night_cycle_time = 15;
var animation_delay = day_night_cycle_time / 2;
var animation_tonight = nuevo timelinemax ({
Repetir: -1,
YOYO: VERDADERO,
RepetDelay: Animation_Delay
});
Dentro de nuestra SVG, tenemos una capa de superposición hecha de un rectángulo que cubre toda la imagen con el mismo gradiente de fondo que nuestro fondo de noche. La superposición aplica el modo de mezcla 'Multiplicar' para oscurecer toda la imagen. Nuestra animación simplemente hace pasar la opacidad de este elemento.
Animation_Tonight
.to ('# noche-superposición',
Day_night_cycle_time, {
Opacidad: 1,
facilidad: animacion_ase
}
, 0, 0)
;
GSAP ofrece otros tejidos en la parte superior de los tipos comunes 'a' y 'de'. El tipo de Tween que necesitamos para animar nuestro gradiente es el paso 'Staggerto'. También podemos usar la propiedad 'ciclo' para rotar la rueda de color alrededor de nuestros nuevos valores.
.staggerto ('# Day Time Stop',
Day_night_cycle_time, {
ciclo:{
STOPCOLOR: ['# 060414', '# 416584']
},
Facilidad: Animation_Ear,
}, 0, 0)
Podemos seguir agregando animaciones a nuestra animación de 'esta noche'. Esta vez agregaremos un nuevo 'a' Tween para establecer nuestro sol. Estableceremos el tiempo de visualización para ser una fracción del tiempo de ciclo para animar el sol antes de la luna. GSAP nos permite establecer casi cualquier atributo. Usaremos esto para animar las propiedades 'CX' y 'CY' a debajo de la colina a la derecha.
.to ('# Sun', Day_Night_cycle_time / 1.25, {
Escala: 0.9,
ATTR: {CX: "753", CY: "697"},
Facilidad: Animation_Ear}
, 0, 0)
Usaremos la misma técnica que usamos para animar el sol fuera de la vista (vea el paso 11 anterior) para animar la luna en la vista. Podríamos lograr esto usando una Tween, por supuesto, pero para crear un arco falso que haremos esto está en dos partes. En ambas partes, también vamos a aplicar un nuevo valor a la propiedad de escala.
.to ('# luna', day_night_cycle_time / 2, {
Escala: 0.9,
ATTR: {CX: "174.5", CY: "202.5"},
Facilidad: Animation_Ear}
, 0, 0)
La segunda parte de la animación de la Luna espera que la primera sección termine antes de que comience. NOTA: Estas dos partes de la animación lunar están encadenadas dentro del código de animación junto con las otras propiedades del día a la noche que estamos usando.
Animation_Tonight
...
.to ('# luna', day_night_cycle_time / 2, {
Escala: 0.9,
attr: {cx: "410.5", CY: "114.5"},
Facilidad: Animation_Ear}
, day_night_cycle_time / 2, 0)
;
La única parte a la izquierda de nuestra animación diurna a la noche son las estrellas. Animaremos las estrellas en vista de la transición de una serie de propiedades. El primero de ellos es simplemente llevarlos a la vista animando su opacidad.
.to ('# estrellas', day_night_cycle_time / 2,
{opacidad: 1},
Day_night_cycle_time / 2,
0)
A continuación, usaremos el paso 'desde' para mover las estrellas y gírelas de un ángulo negativo a medida que se animan a la vista. Estamos usando algunas matemáticas simples para calcular nuestro tiempo de animación y retraso, todos en función de nuestra variable 'Day_night_Cycle_Time'.
.desfrom ("# estrellas",
Day_night_cycle_time - (Day_night_cycle_time / 4),
{Y: 150, Rotación: -15, Facilidad: Animation_Ease},
Day_night_cycle_time / 4,
0)
Ahora hemos creado nuestra animación diaria, podemos crear otra animación constante para que nuestras estrellas parpadeen. Crearemos la nueva línea de tiempo y luego registraremos la duración de la línea de tiempo en la consola.
var animation_stars = nuevo timelinemax ({
Repetir: -1,
Yoyo: cierto
});
Ahora, hemos creado la línea de tiempo lista para la animación, necesitamos crear nuestra animación parpadeante. La animación es realmente simple: todo lo que queremos hacer es reducir el valor de opacidad. Gracias a la propiedad 'Yoyo', la opacidad se animará y se apagará y así hará que las estrellas se vean como si estuvieran parpadeando.
Animation_Stars
.to ("# estrellas", 0.5,
{opacidad: 0.5, facilidad: animation_ase}
, 0, 0)
;
En el último paso, nos dirigimos a los grupos de estrellas para aplicar nuestra animación parpadeante, sin embargo, se vería mucho mejor si las estrellas parpadean a parpadear una a la vez en lugar de juntas al mismo tiempo. Logramos esto apuntando a cada estrella por separado y aplicando una animación diferente.
Animation_Stars
...
.to ("# star-two", 0.5,
{opacidad: 0.5, facilidad: animation_ase}
, 1.25, 0)
.to ("# star-tres", 0.5,
{opacidad: 0.5, facilidad: animation_ase}
, .75, 0)
...;
¡Eso es! Nuestra animación de ciclismo día a noche está terminada y parece increíble, pero no tenemos que detenernos allí. Dado que la imagen está en SVG, podemos agregar fácilmente nuevos elementos a nuestro paisaje. Vamos a agregar algo de nieve. Haremos esto usando dos capas separadas. Cada capa tiene una colección de elipses lo suficientemente grandes como para cubrir el paisaje y luego la misma colección se repitió anteriormente.
& lt; g id = "Snow-Fit-Layer" ... & gt;
...
& lt; Ellipse ... / & gt;
& lt; / g & gt;
& lt; g id = "Snow-top-Layer" ... & gt;
...
& lt; Ellipse ... / & gt;
& lt; / g & gt;
Creamos dos líneas de tiempo separadas para nuestra nieve para poder animarlas sobre diferentes duraciones. También registraremos sus duraciones a la consola.
var animation_snowtop = nuevo timelinemax ({
Repetir: -1,
Repetddelay: 0
});
var animation_snowbottom = nuevo timelinemax ({
Repetir: -1,
Repetddelay: 0
});
Para animar nuestras capas de nieve, queremos mover las dos capas a lo largo del eje vertical. Al diferenciar sus duraciones, obtendremos la apariencia de las capas que se movieron a diferentes velocidades. La animación funciona moviendo la colección de elipses a lo largo del eje vertical hasta que la segunda colección esté en su lugar de la primera. Luego repitimos la animación.
Animation_snow
.to ("# # Snow-Layer", 7,
{attr: {transformar: "traducir (24 -108)"}
, Facilidad: Animation_Ear}
, 0, 0)
;
Encuentra la colección completa de bolígrafos tutoriales. aquí . ¿Necesitas un lugar seguro para guardar tus archivos? Ver nuestra guía para almacenamiento en la nube .
Este artículo se publicó originalmente en Creative Web Design Magazine Web Designer. Suscríbete al diseñador web aquí .
Artículos relacionados:
(Crédito de la imagen: Aaron Blaise) Aprender a dibujar animales es una parte integral de la ilustración. Desde esc..
El ejemplo del mapa ha tenido un verdadero resurgimiento en los últimos años. Una alternativa emocionante a un mapa de Google seco, los mapas ilustrados se pueden llenar con caracteres y de..
[dieciséis] [Imagen: Diseñador web] Cuando se trata de animar con SVGS, un desvío importante puede ser la idea de atascarse..
[dieciséis] Inteligencia artificial (AI) nos permite crear nuevas formas de ver los problemas existentes, de repensar estrategias ambi..
[dieciséis] Página 1 de 2: Página 1: Cargando más rápido Página 1: Cargando más rá..
[dieciséis] El diseñador de afinidad es una herramienta popular de edición de vectores para Mac, Windows y ahora ipad . L..
[dieciséis] El uso de luces de domo ha sido uno de los mayores avances en la creación de CGI en las últimas décadas. Bañar una esc..
Página 1 de 2: Página 1 Página 1 Página 2 En este artículo, vo..