Saltar al contenido →

¿Cómo se hizo? Acerca de

En esta nueva entrega de la serie de artículos ¿Cómo se hizo?, explicaré el proceso de creación de la página Acerca de. Esta página tiene una línea de tiempo y está hecha con HTML5, CSS y Javascript para poner la guinda con el efecto visual.

El código HTML

El HTML es bastante sencillo. No voy a copiar y pegar el código completo ya que es muy repetitivo y tan sólo copiando un hito podré explicar lo necesario. Si queréis ver el código completo, como siempre os dejo el enlace de la demo completa.


El div de id «timeline» contiene todas las partes necesarias para mostrar la línea de tiempo. Esta línea de tiempo está dividida en cuatro partes:

  • La línea central de color rojo oscuro: es nuestra línea de tiempo. En nuestro HTML, es un simple div con una única clase «linea».
  • Los círculos de color gris que aparecen encima de esa línea de tiempo. Representan nuestros hitos. Lo represento con un div con un id que tiene relación con el año del tipo «hitoXXX» donde XXX es el año del hito. Este elemento tiene varias clases aplicadas:
    • «hito»: Esta clase tendrá el css encargado de darle la forma de círculo y el color.
    • «alturaX»: Esta clase se compondrá siempre de altura y un número. Es la encargada de posicionar verticalmente el hito modificando el valor del «top» del div. Estas clases (altura1, altura2, altura3, …) son necesariamente modificadas en el caso de distintos tamaños de pantalla como se verá en las media queries.
    • «left» o «right»: Posiciona el círculo a la izquierda o derecha dependiendo de hacia donde quiera dirigir la línea y donde esté situada la caja de texto correspondiente al hito.
    • «hidden»: Esta clase es necesaria para el javascript para ocultar inicialmente todos los hitos e ir haciéndolos aparecer sucesivamente.
  • Las cajas de textos son el detalle de nuestros hitos con el año y una descripción del hito. Cada caja de texto tiene un id del tipo «hitoXXX_caja» donde XXX es el año del hito. Esto nos permite después identificar los hitos y sus distintos componentes (círculo, línea y caja) desde el javascript. También tiene aplicadas las mismas clases que tiene el círculo : «alturaX», «left» o «right» y «hidden». Además de esas clases,  la clase «hito-caja» se encarga del aspecto de la propia caja.
  • Por último, las líneas grises que unen los círculos con las cajas de hitos. Estas líneas tienen el id creado con la misma idea que los anteriores «hitoXXX_linea». Las clases aplicadas vuelven a ser las mismas con el añadido de la clase «hito-linea» que se encarga de darle el aspecto a la línea.

Veamos entonces ahora el código CSS.

¡Dame estilos… el CSS!

El «#timeline» lleva position: relative porque todos los elementos dentro del div de la línea de tiempo tendrán un posicionamiento absoluto respecto a ese div. Además, ese div tiene un mínimo ancho obligatorio de 320px esto es para evitar que al hacer cada vez más pequeña la pantalla se vaya amontonando las cajas de texto unas encima de otras, si la pantalla es menor que 320px, aparecerá scroll horizontal para mantener un aspecto visual decente.

El círculo del hito «#timeline .hito» es un simple div con un border-radius: 50%Esta instrucción hace que el div parezca un círculo casi perfecto. Después de esta clase, defino las clases «left» y «right» para el círculo y las clases «alturaX» que sólo van aumentando el top para que cada círculo aparezca a una distancia razonable del anterior y dejar sitio suficiente a la caja de texto.

El resto del css es entendible pero si tienes alguna duda, deja un comentario e intentaré ayudarte.

¡Pero esto no acaba aquí! Falta el CSS que hace moverse los divs, los keyframes de los que he hablado en el artículo del ¿Cómo se hizo? El logo.

¡Move, move, move!

He creado 4 keyframes para poder realizar todos los efectos necesarios:

  • «growit» se encarga de hacer crecer la línea roja hasta su tamaño completo.
  • «showit-left» y «showit-right» se encargan de hacer crecer las líneas grises de los hitos hacia la izquierda o derecha como el nombre de las clases indican.
  • «appears» modifica la opacidad de la caja de texto del hito para hacerla aparecer progresivamente.

Y ahora lo último pero no menos importante:

El javascript

El javascript os sonará, porque no difiere en exceso del que he utilizado para hacer el logotipo. Consiste en añadir las clases que he creado con los keyframes una a una para hacer el efecto de que vaya apareciendo cada hito uno tras otro.

Un último esfuerzo: Las media queries.

Sólo nos queda un último esfuerzo, adaptar nuestra línea de tiempo a pantallas más pequeñas.

Sólo tengo que adaptar el alto de la línea roja, y la posición de cada clase «alturaX». Tampoco hay que olvidar de adaptar los keyframes y retocar el tamaño de las cajas de hitos para que el texto pueda leerse mejor.

Ahora sí, se acabó, la línea de tiempo está completamente lista. Aquí tenéis el enlace para ver la demo: VER DEMO

Share