JOSÉ JUANAS

Facebook Gmail Linkedin
Galleta

Cookies

Utilizamos cookies propias y de terceros para mejorar nuestros servicios.

Aviso de Cookies

Propiedad Transition de CSS

Las transiciones en CSS nos permiten aplicar un cambio de estilo gradual a cualquier elemento, del documento HTML, además, nos ofrecen la ventaja de poder especificar que propiedades css, transicionaran, el tiempo que durará, esta transición, el ritmo al que se desarrollara y el tiempo para que empiece esa transición, entre estilos, de esta forma podemos utilizarlas, para dar efectos de animación y dinámismo a las páginas.

La sintaxis de la propiedad transition recibe una serie de parametros: transition-property, transition-duration, transition-timing-function y transition-delay, que pueden declararse, cada uno por separado o en una sola línea de código, de manera abreviada.

Por Ejemplo: {transition: padding 3s linear 1s}

Es lo mismo que:

transition-property:padding; es el atributo css a transicionar (abajo hay una lista animada con casí todas las propiedades css, que admiten transition). Pueden ponerse las propiedades que quieras, separadas por comas, o usar la palabra clave all para transicionar a la vez, todas las propiedades css, que espacifiques.

transition-duration:3s; son 3 segundos, que es el valor en tiempo que durará la transición, también puede ir en ms (milisegundos). Cabe decir que no es conveniente hacer transiciones demásiado largas.

transition-timing-function:linear; es uno de los valores que podemos asignarle, para darle distintos ritmos a la transición, es opcional declararlo, pero importante, su valor por defecto, es ease.

transition-delay.1s; que especifica, el tiempo de retardo con que empezará la transición. Opcional declararlo, pero muy útil, sobre todo para encadenar transiciones.

LISTA ANIMADA

Propiedades CSS que admiten transition

  • all
  • background
  • border
  • border-radius
  • color
  • top
  • bottom
  • left
  • right
  • box-shadow
  • width
  • height
  • line-height
  • margin
  • opacity
  • letter-spacing
  • word spacing
  • padding
  • text-shadow
  • vertical-align
  • visibility
  • z-index
  • font-family
  • entre otras.

Las transiciones anteriores, inician con la pseudoclase :hover de CSS, es decir, al posar el ratón sobre el elemento. También es habitual emplear para las transiciones los pseudoelementos ::after y ::before

Sintaxis de la propiedad
transition:

Como he comentado antes, se pueden especificar todas las propiedades css, a transicionar, separadas por comas o abreviar empleando all.

Todo se ve mejor con un ejemplo haz hover en la siguiente caja azul y después en cada una de sus etiquetas, para observar como transicionán.

<div class="caja-azul"> <span>background</span><span>color</span><span>font-size</span><span>line-height</span><span>border-radius</span><span>box-shadow</span><span>opacity</span><span>border</span><span>margin</span><span>padding</span> </div> .caja-azul { position: relative; display: grid; grid-template-columns: repeat(3, minmax(100px, 1fr)); justify-content: space-evenly; gap: 10px; width: 100%; max-width: 50%; height: 100%; text-align: center; background-color: aqua; opacity: 0.7; transition: 2s linear 0.5s; } .caja-azul span {display: inline-block; max-width: 200px; position: relative;} .caja-azul:hover { transition: all 3s ease 0.5s; background-color: red; color: white; font-size: 20px; line-height: 1.2; border-radius: 30%; box-shadow: 4px 4px 2px 1px rgba(0,0,0,.5); opacity: 1; border: 2px solid rgba(255,255,255,.5); margin: 10px; padding: 40px; } .caja-azul span:hover { transition-property: color, opacity, left, padding, font-family, border, border-radius, background-color; transition-duration: 0.6s; transition-timing-function: linear; transition-delay: 0.3s; color: black; opacity: 0.8; left: 10px; padding: 6px 6px; font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif; border: none; border-radius: 10%; background-color: white; }

Sintaxis de transition-timing-function:

Para declarar el ritmo, con que se desarrollarán tanto transiciones, como animaciones, estan las funciones de tiempo (cubic-bezier). Definiremos el transcurso de la transición, especificando, alguno de estos valores, por palabras claves (ya tienen la cubic-bezier, predefinida), que tienes a continuación, en una lista, en la que cada <li> hace una transición con el ritmo que define, o ponerle una curva de tiempo (cubic-bezier), personalizada. Por defecto las transiciones se desarrollan por el valor ease.

  • EASE: transicion con inicio y final lentos y transcurso rápido. cubic-bezier(0.25, 0.1, 0.25, 1)
  • LINEAR: transición que transcurre al mismo ritmo. cubic-bezier(0, 0, 1, 1)
  • EASE-IN: transición con inicio lento y transcurso y final normal. cubic-bezier(0.42, 0, 1, 1)
  • EASE-OUT: transición con inicio y transcurso normales y final lento. cubic-bezier(0, 0, 0.58, 1)
  • EASE-IN-OUT: transición con inicio y final lentos y transcurso normal. cubic-bezier(0.42, 0, 0.58, 1)
  • cubic-bezier(0.2, 0.4, 0.7, 0.8): transición personalizada.
  • cubic-bezier(0, -1, 1, 2): transición con rebotes.

Función de salto

Existe otra forma de declarar el ritmo ó transcurso, de las transiciones y animaciones, las funciones de salto, muy útiles en algunos casos, permiten establecer un numero determinado de pasos ó fotográmas en la transición ó animación y puede recibir todos estos valores:

  • steps(5, jump-start)

    Transición ó animación, que dará cinco saltos, omitiendo el primero.

  • steps(5, jump-end)

    Transición ó animación, con cinco saltos, que omite el último.

  • steps(5, jump-none)

    Transición ó animación, de cinco saltos, que no omite ninguno.

  • steps(5, jump-both)

    Transición ó animación, de cinco saltos, que omite el primero y el último.

  • steps(5)

    Transición ó animación que equivale a steps(5, jump-end).

  • steps(5, start)

    Transición ó animación que equivale a steps(5, jump-start).

  • steps(5, end)

    Transición ó animación que equivale a steps(5, jump-end).

  • step-start

    Transición ó animación que equivale a steps(1, jump-start).

  • step-end

    Transición ó animación que equivale a steps(1, jump-end).

Estas funciones de salto, son especialmente interesantes, para implementar transiciones ó animaciones, de imágenes de tipo sprite, que son imágenes de objetos ó personajes, con ligeras variaciones, entre fotográma y fotográma. Enpleando funciones de tiempo, no quedan bien, hay que ponerles, estas funciones de salto, para que al transicionar o animar la imágen, cambiando la background-position, hagan el efecto, de ser una imágen individual animada. Abajo puedes ver un sencillo ejemplo, que se activa al posar el ratón, en la cara sonriente.

<div id="sonrisa"></div> #sonrisa { width: 250px; height: 211px; margin: 0 auto; background-image: url("../../pagina_inicio/imagenes/sonrisa-guiño.jpg"); background-position: 0px; } #sonrisa:hover {animation: sonrisa 2s steps(3) infinite;} @keyframes sonrisa { from{background-position: 0px;} to{background-position: -690px;} }

Otros apuntes sobre
transition

Si declaramos una transición sobre un elemento, empleando la pseudoclase :hover, esta será la transición de entrada, en el momento que retiramos el ratón, del elemento, este volverá a su estado original, de forma brusca. Para conseguir que vuelva a su estado original, también transicionando de manera gradual, debemos establecer también la transición, al elemento en el CSS. Que no tiene porque ser la misma, en duración ó propiedades, esto se conoce, como, transición de salida.

También es importante destacar, que en transiciones, de varias propiedades css, a la vez, podriamos especificar, distintas duraciones, para la transición de cada propiedad, creándo efectos distintos, de la siguiente manera:

<div class="flex"> <div class="caja1"> <p>Todas las propiedades transicionán en 3s.</p> </div> <div class="caja2"> <p>Cada propiedad tiene una duración<br> de transición distinta</p> </div> </div> .flex { width: 100%; max-width: 90%; display: flex; justify-content: space-around; } .caja1, .caja2 { background: black; width: 300px; height: 150px; transition: 2s; /* transición de vuelta */ } .caja1 p, .caja2 p { opacity: 0; font-weight: bold; } .flex:hover .caja1 { transition: background, width, height; transition-duration: 3s; background: lightblue; width: 400px; height: 200px; } .flex:hover .caja2 { transition: background 1.5s, width 3s, height 0.5s; background: lightblue; width: 400px; height: 200px; } .flex:hover .caja1 > p, .flex:hover .caja2 > p { transition: opacity 1s linear 2s; opacity: 1; }

Conclusión

Como habras podido observar, la propiedad transition es una gran herramienta de css, para crear efectos dinámicos en las páginas, sin necesidad de javascript, aunque combinado con el, se consigue, mayor control sobre las mismas.

Tampoco es recomendable abusar de los efectos, como hago yo en esta página, pues no gustán a todos los usuarios y distraen de la lectura. Son más esteticos los efectos sutiles y que cumplán una función, como por ejemplo, en el :hover sobre enlaces.

Pero observar, los efectos que se pueden crear con transiciones, en listas, menus de navegación o en botones en vuestras web, por cierto aprovecho para remitiros a mi página botones sociales, donde os muestro diferentes ubicaciones, para los botones sociales, en una web.

Ya para concluir, si te ha gustado alguno de mis efectos, ya sabes haz click derecho y mostrar codigo fuente o exámina la página con la herramienta dev tools del navegador, así es como yo aprendo.

Contacto José Juanas
Datos del mensaje
 WEBMASTER  JOSE JUANAS