Banners animados: Cómo realizar animaciones en CSS3

En este tutorial vamos a ver cómo podemos animar un banner, cuyo contenido sea HTML simple, con CSS3.

Banners animados: cómo realizar animaciones con CSS3

0. Índice de contenidos.

1. Introducción

En este tutorial vamos a ver cómo podemos animar un dibujo con CSS3, lo que nos dará una idea global de las posibilidades de las animaciones haciendo
uso de la nueva versión de la especificación de hojas de estilo en cascada. La idea es la de tener un fondo fijo y añadir distintas imágenes en movimiento.

La idea es la de poder realizar un banner animado sin la necesidad de hacer uso de flash, sino directamente con HTML5 y CSS3.

El resultado final de la animación lo tienes al pie de este tutorial, pero ten en cuenta que solo funcionará si
tu navegador soporta HTML5.

2. Entorno.

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Hp Pavilion dv7 Notebook PC (Intel Core 2 Duo a 2.26 GHz, 4 GB RAM, 450 GB HD).
  • Sistema operativo: Windows Home Premium.
  • Css3, Html5 y editor de fotos.

3. Los elementos gráficos.

Para su realización, lo primero que vamos a hacer es crear los elementos gráficos.

Unos fondos simples para nuestra animación podrían ser algo como esto:

fondo

fondo rebajado

El primer elemento que vamos a animar es una mosca, para que se vaya moviendo por el cielo de nuestro fondo.

mosca izquierdamosca derecha

Unas serpentinas que caerán del cielo:

hoja1

Un texto con el logotipo de adictos:

adictos al trabajo
anima a la selección

Y, por último, un muñeco saludando. Para ello hemos obtenido un dibujo con el tronco y brazo derecho del siguiente banner de adictos y después hemos recortado el brazo izquierdo por separado que es el que va a saludar.

troncomano izquierda

Todos los elementos gráficos los disponemos en nuestro html dentro de un capa del siguiente modo:





Dibujo animado CSS 3 
 

 	
mosca
mosca2
adictos al trabajo
anima a la selección
brazo
cuerpo

Cada imagen a animar la incluimos dentro de una capa, que será la que animaremos. Ejemplo: hay tantos #Div como serpentinas queremos que caigan, un #Div para el cuerpo, otro #Div para el brazo, etc….

4. Los estilos.

El objetivo es añadir los estilos necesarios que nos permitan realizar transiciones de los elementos graficos entre distintas posiciones en la pantalla.

Así para las moscas:

@-webkit-keyframes mosca {

from {
      left: -200px;
	  opacity: 1;
      }

to {
      left: 700px;
      opacity: 1;
    }
	 
 }

@-webkit-keyframes mosca2 {
from {
      left: 700px;
	  opacity: 1;
      }
to {
      left: -500px;
      opacity: 1;
    }
}
  
#mosca {
	position:relative;
	-webkit-animation-name: mosca;
	-webkit-animation-duration: 6s;
	-webkit-animation-iteration-count: 2;
	-webkit-animation-direction: right;
	-webkit-animation-timing-function: ease-in;
	float: left;
	right: 60px;
}

#mosca2{
	-webkit-animation-name: mosca2;
	-webkit-animation-duration: 8s;
	-webkit-animation-iteration-count: 2;
	-webkit-animation-direction: left;
	-webkit-animation-timing-function: ease-in;
	float: right;
	position: relative;
	left: 60px;
}

Definimos:

  • que la capa mosca se moverá de la posición -200px a 700px (de fuera del escenario hacia dentro), y luego la capa mosca2 se mueve de 700px a -200px
  • que duran 6 y 8 segundos respectivamente y repetido 2 veces.

Ahora vamos a animar el confeti que cae:

@-webkit-keyframes confetis{
		   	from {
				top: -300px;
				opacity: 0;
			}
			to {
				top: 100px;
				opacity: 1;
			}
		}

@-webkit-keyframes confeti{
    0%   { -webkit-transform: rotate(0deg) translate(0px, 0px);}
	100% { -webkit-transform: rotate(0deg) translate(0px, 0px);}
}
#confeti div {
	top: 110px;
	-webkit-animation-name: confeti, confetis;
	-webkit-animation-iteration-count: 2;
	-webkit-animation-direction: normal;
	-webkit-animation-timing-function: ease-in;
		}
	
.confetis {	
			position: absolute;	
		}
.confetis.f1 {
			-webkit-animation-duration: 5s;
		}
.confetis.f2 {
			-webkit-animation-duration: 10s;	
		}
.confetis.f3 {
			-webkit-animation-duration: 7s;	
		}

Como podéis ver aquí le decimos que el confeti vaya desde -300px (desde arriba) hasta 100px (fuera del #Div contenedor) y de transparente 0 a opaco 1.

Después hemos ido dando propiedades especificas a cada confeti.

La siguiente es la animación más compleja puesto que hay que cuadrar el brazo con el tronco y conseguir el movimiento adecuado:

@-webkit-keyframes brazo {
	0% {	 
		-webkit-transform: rotate(0deg) translate(0px,0px);
	}
	100% {
		-webkit-transform: rotate(-20deg) translate(-15px,30px);	
	}
}
 
#brazoizquierdo {
	position: relative;
	top:0px;
	left:0px;
	width:0px;
	-webkit-animation-name: brazo;
	-webkit-animation-duration: 2s;
	-webkit-animation-iteration-count: infinite;
	-webkit-animation-direction: alternate;
	-webkit-animation-timing-function: ease-in;
	float: left;
}

Esto es lo que hace es que se mueva el brazo izquierdo y nos esté saludando, utilizando las propiedades ya vistas.

Por último el eslogan de adictos con sus propiedades css para darle formato y color y efectos css3:

@-webkit-keyframes movimiento-diagonal {
   from {
      left: 130px; top: -50px;
	  opacity: 1;
   }
   
   to {
      left: 130px; top: 30px;
	  opacity: 0.5;
   }
}   

#anim {
	text-shadow: rgba(255, 255, 255, .9) 0px 0px 5px;
	-webkit-animation-name: movimiento-diagonal;
	-webkit-animation-duration: 2s;
	-webkit-animation-iteration-count: 1;
	-webkit-animation-direction: alternate; /*para que vuelva a su posicion inicial */
	width: 300px;
	color: #FFF;
	position: relative;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 25px;
	font-weight: bolder;
	text-align: center;
	left: 130px;
	top: 20px;
	background-color: rgba(255, 255, 255, .9) 0px 0px 5px;
} 

Con esto terminamos nuestro código CSS para las animaciones y solo nos faltan par de estilos más:

#container {
	width: 500px;
	height: 99px;
	background-image: url(fondoreb.png);
	/*background-image: url(../imagenes/fondo.png);*/
	background-repeat: no-repeat;
	moz-box-shadow: 3px 3px 10px #000;
	-webkit-box-shadow: 3px 3px 10px #000;
	box-shadow: 3px 3px 10px #000;
	overflow: hidden;
	position: absolute;
}

#container:hover {
	width: 500px;
	height: 99px;
	background-image: url(fondo.png);
	/*background-image: url(../imagenes/fondo.png);*/
	background-repeat: no-repeat;
	/*moz-box-shadow: 3px 3px 10px #000;
	-webkit-box-shadow: 3px 3px 10px #000;
	box-shadow: 3px 3px 10px #000;*/
	overflow: hidden;
	position: absolute;
}

#containerprincipal {
	width: 500px;
	height: 99px;
	border: 2px solid #000;
	}

#situacion {
	position: relative;
	float: left;
} 

Uno para las propiedades de la capa que contiene el fondo, la mosca y el confeti y su efecto :hover. Otro para la capa que contiene el muñeco animado y otro para la situacion del cuerpo del muñeco.

5. Resultado.

Ahora sólo nos queda ver nuestro ejemplo de banner funcionando.
Presiona F5 en Google Chrome, Ctrl+Shift+r en Safari o recarga la página, para ver la animación desde el principio.

mosca
mosca2
adictos al trabajo
anima a la selección

brazo
cuerpo

6. Referencias.

  • http://css-tricks.com/snippets/css/webkit-keyframe-animation-syntax/
  • http://www.webdesignerwall.com/trends/47-amazing-css3-animation-demos/
  • http://css-infos.net/properties/webkit.php
  • http://dev.sencha.com/deploy/css3-ads/

7. Conclusión.

Aplicado a la generación de banners, con la nueva versión del CSS3, su contenido será accesible e indexable. ¿Adios a los banners hechos en flash?.

Un saludo.

Chema

mailto:chmadi@gmail.com

Comentarios

Un comentario

  1. Sobre la conclusión, si que parece que Flash está perdiendo terreno a medida que la web (CSS combinado con JS, DOM, Ajax…) va cogiendo fuerza en la parte gráfica e interactiva….

    Pero bueno, a ver que pasa. El banner te ha quedado chulísimo 🙂

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Técnico en artes gráficas, experto en preimpresión y webmaster.

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

16/02/2026

Daniel Rosique Evangelista

Seguir ejecutando aplicaciones web sobre versiones obsoletas de PHP no es solo una decisión técnica cuestionable, sino un riesgo real para la seguridad, el rendimiento y la sostenibilidad del proyecto. PHP 8 supone un punto de inflexión que conviene abordar cuanto antes.
Imagen con fondo abstracto azul y el texto “Adictos al Trabajo” centrado.

11/02/2026

Rubén Gavilán Fernández

El autoescalado de runners en GitLab CI permite adaptar dinámicamente la capacidad de ejecución de los pipelines a la carga real de trabajo. En este artículo analizamos la arquitectura del Docker Autoscaler executor y mostramos un ejemplo práctico de autoescalado sobre AWS, optimizando rendimiento, costes y operativa DevOps.

30/10/2025

Benjamín Suárez Menéndez

El Complex Problem Solving (CPS) es un proceso estructurado basado en herramientas, técnicas y actitudes que nos facilita la resolución de problemas complejos.