Animaciones y Efectos CSS

Oct 30 2020
Animaciones y Efectos CSS

En el presente post, voy a tratar de exponer de forma clara y sencilla cómo se aplican diferentes efectos y animaciones a nuestros elementos HTML usando exclusivamente CSS. El principal objetivo no es el de enumerar todas las propiedades, así como sus posibles valores o funciones, si no la de conocer las distintas posibilidades que nos ofrece CSS a la hora de aplicar cierto dinamismo a nuestros elementos. Para ello lo mejor es conocer y diferenciar las distintas propiedades, valores y funciones que se usan para dicho fin.

Estas propiedades son:

  • Transition: Permite aplicar un cambio de estado de las propiedades.
  • Transform: Permite aplicar una serie de funciones de transformación a un elemento.
  • Animation: Permite animar elementos HTML sin usar JS.
  • Y la directiva @keyframes: Usada para definir los estados de una animación.

Transiciones

Su objetivo principal es el de suavizar el cambio de valor de una o varias propiedades. Existen 4 propiedades principales asociadas a las transacciones:

  • transition-property: es donde se indica la propiedad que se le va a aplicar el cambio de valor.
    • all | none | propiedad
  • transition-duration: establece el tiempo que durará la transición.
    • Indicada en segundos. Ejemplo: 2s
  • transition-timing-function: indica el modo en el que se producirá el cambio de estado.
    • ease | linear |ease-in | ease-out | ease-in-out
  • trasition-delay: es el tiempo de retraso antes de que comience dicha transición.
    • Indicada en segundos. Ejemplo: 2s

Estas propiedades se pueden establecer por separados o agrupadas en el siguiente shorthand:

  • transition: <property> <duration> <timing-function> <delay>

Al definir una transición, ésta se ejecutará cuando se produzca un determinado evento sobre el elemento al que se le ha aplicado la transición. A modo de ejemplo, se puede lanzar una transición con la pseudo-clase :hover.

definir una transición

 

En este ejemplo, la capa aumentará de tamaño y cambiará de color al hacer hover, pero al tener establecida la propiedad “transition” se hará de una manera suave, lineal y que durará 2 segundos.

Hay que tener en cuenta que la transición se especifica en la regla base.

Transformaciones

 

Las trasformaciones permiten aplicar distintas funciones a un determinado elemento, como rotar, torcer, etc. Para ello nos basta con utilizar las siguientes propiedades:

  • transform-origin: Cambia el punto de origen del elemento en una transformación. Por defecto es el lado superior izquierdo del elemento.
  • transform: Aplica una o varias funciones de transformación sobre un elemento. Las principales funciones serían:

Funciones 2d:

    • translate(%|px, %|px)
    • translateX(%|px)
    • translateY(%|px)
    • scale(n n)
    • scaleX(n)
    • scaleY(n)
    • rotate(x-deg y-deg)
    • rotateX(x-deg)
    • rotateY(y-deg)
    • skewX(x-deg)
    • skewY(y-deg)

Funciones 3d:

 

    • translate3d(%|px, %|px, %|px)
    • translateZ(%|px)
    • rotate3d(x-deg,y-deg,z-deg,a)
    • rotateZ(z-deg)
    • scale3d(x,y,z)
    • scaleZ(z)

 

Para que el efecto 3d funcione tenemos 2 opciones:

  • Establecer la propiedad “perspective” al contenedor.

HTML

Html propiedad "perspective"

CSS

 

css perspective como propiedad

  • O aplicar la función perspective() como valor de la propiedad transform del elemento.

HTML

perspective como propiedad transform del elemento

CSS

perspective como propiedad transform del elemento en css

 

El resultado es el mismo en ambos casos:

resultado de la acción

Animaciones

Para crear una animación se debe generar un “@keyframes”, que es una directiva que permite establecer los diferentes estados por el que se quiere hacer pasar a un elemento.

Es mejor visualizarlo con un ejemplo:

animaciones en css con keyframes

 

 

Nota: 0% y 100% puedes sustituirse por from y to.

Se nombra al @keyframes, en este caso con el nombre de “mymove” y se establece los puntos de control que tendrá, así como las propiedades y valores que se irán modificando en cada punto.

Una vez hecho esto, ya se puede usar la animación en el elemento html, con el siguiente “shorthand”:

animation: <name> <duration> <timing-function> <delay> <iteration-count> <direction> <fill-mode> <play-state>

animaciones en html shortland

 

* En la w3school se puede ver los distintos valores que pueden tomar cada propiedad, así como su funcionalidad.

https://www.w3schools.com/css/css3_animations.asp

Como se aprecia en el ejemplo, no es necesario usar todas las subpropiedades. Estas subpropiedades también se pueden aplicar de forma individual.

Es importante saber que no todas las propiedades son suceptibles de ser animadas, en el siguiente enlace se puede comprobar cuales sí:

http://www.w3bai.com/es/cssref/css_animatable.html

Conclusión

Como se ha podido ver, de una manera breve, se puede hacer animaciones, transformaciones, … a nuestros elementos de una forma bastante sencilla usando solamente CSS. Lógicamente este post es solo una pequeña introducción al potencial que se puede obtener mezclando estas propiedades.

 

Para ello dejo un ejemplo de una animación 3d con el logo de atSistemas, en donde solamente se ha usado HTML y CSS. No se ha empleado ninguna imagen ni ningún código JS.

resultado final

 

Puedes ver el proyecto en: https://codepen.io/Jesus-Garcia-Navarro/pen/YzWeoOJ

 

 

Jesús García Navarro


Comparte este artículo

Utilizamos cookies propias y de terceros para ofrecerte una mejor experiencia y servicio, dentro de nuestra Web de acuerdo a tus hábitos de navegación. Si continúas navegando, consideramos que aceptas expresamente su utilización. Puedes obtener más información de cómo gestionar y configurar las cookies en nuestra Política de Cookies.

×

Preferencias de Cookies


Cookies esenciales
Cookies funcionales
Cookies de análisis
Cookies de marketing