11. Transiciones CSS

Las transiciones CSS te permiten cambiar los valores de propiedad sin problemas, durante un período determinado. En este capítulo miraremos las siguientes propiedades:

  • transition
  • transition-delay
  • transition-duration
  • transition-property
  • transition-timing-function

Como usar transiciones CSS

Para generar una transición debemos seguir dos pasos:

  • la propiedad CSS a la que desea agregar un efecto
  • la duración del efecto

Nota: Si no se especifica la parte de duración, la transición no tendrá efecto, porque el valor predeterminado es 0.

Ejm

<!DOCTYPE html>
<html lang="es">
<head>
<style>
div {
width: 100px;
height: 100px;
line-height: 100px;
color: yellow;
background: red;
transition: width 2s;
text-align: center;
}

div:hover {
width: 300px;
}
</style>
</head>
<body>
<h1>La propiedad transition</h1>
<p>
Pasa el cursor sobre el elemento div a continuación para ver el efecto de
transición:
</p>
<div>Hola que tal</div>
</body>
</html>

Cambiar varios valores de propiedad

El siguiente ejemplo agrega un efecto de transición tanto para la propiedad width como para height, con una duración de 2 segundos para el ancho y 4 segundos para el alto:

div {
  transition: width 2s, height 4s;
}

Especificar la curva de velocidad de la transición

La propiedad transition-timing-function especifica la curva de velocidad de la transición. Esta propiedad puede tener los siguientes valores:

  • ease: especifica un efecto de transición con un comienzo lento, luego rápido, luego termina lentamente (esto es predeterminado)
  • linear: especifica un efecto de transición con la misma velocidad de principio a fin
  • ease-in: especifica un efecto de transición con un comienzo lento
  • ease-out: especifica un efecto de transición con un final lento
  • ease-in-out: especifica un efecto de transición con un comienzo y un final lentos
  • cubic-bezier(n,n,n,n): te permite definir sus propios valores en una función cubic-bezier

Ejm

<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 100px;
height: 100px;
background: red;
transition: width 2s;
}

#div1 {
transition-timing-function: linear;
}
#div2 {
transition-timing-function: ease;
}
#div3 {
transition-timing-function: ease-in;
}
#div4 {
transition-timing-function: ease-out;
}
#div5 {
transition-timing-function: ease-in-out;
}

div:hover {
width: 300px;
}
</style>
</head>
<body>
<h1>La propiedad transition-timing-function</h1>

<p>
Pasa el cursor sobre los elementos div a continuación para ver las
diferentes curvas de velocidad:
</p>

<div id="div1">linear</div>
<br />
<div id="div2">ease</div>
<br />
<div id="div3">ease-in</div>
<br />
<div id="div4">ease-out</div>
<br />
<div id="div5">ease-in-out</div>
<br />
</body>
</html>

Retrasar el efecto de transición

La propiedad transition-delay especifica un retraso en segundos para el efecto. El siguiente ejemplo tiene un segundo de retraso en la transición.

Ejm

<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 100px;
height: 100px;
background: red;
transition: width 3s;
transition-delay: 1s;
}

div:hover {
width: 300px;
}
</style>
</head>
<body>
<h1>La propiedad transition-delay</h1>

<p>Pasa el cursor sobre el elemento div:</p>

<div></div>

<p>
<b>Nota:</b> El efecto de transición tiene un retraso de 1 segundo antes
de comenzar.
</p>
</body>
</html>

transition + transform

Ejm

<!DOCTYPE html>
<html lang="es">
<head>
<style>
div {
width: 100px;
height: 100px;
background-color: red;
color: yellow;
transition: width 2s, height 2s, transform 2s;
}

div:hover {
width: 300px;
height: 300px;
transform: rotate(180deg);
}
</style>
</head>
<body>
<h1>transition + transform</h1>
<p>Situa el cursor sobre el elemento div</p>
<div>Hola</div>
</body>
</html>

Las propiedades de transición CSS se pueden especificar una por una, así.

Ejm

<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 100px;
height: 100px;
background: red;
transition-property: width;
transition-duration: 2s;
transition-timing-function: linear;
transition-delay: 1s;
}

div:hover {
width: 300px;
}
</style>
</head>
<body>
<h1>Las propiedades de transition especificadas una por una</h1>

<p>Haz clic sobre div para ver el efecto:</p>

<div></div>

<p>
<b>Note:</b> El efecto de transition tiene un retardo de 1 segundo antes
de comenzar.
</p>
</body>
</html>

O usando la forma abreviada de la propiedad transition 

<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 100px;
height: 100px;
background: red;
transition: width 2s linear 1s;
}

div:hover {
width: 300px;
}
</style>
</head>
<body>
<h1>Usando la forma corta para la propiedad transition</h1>

<p>Situa el cursor sobre el elemento div para ver el efecto:</p>

<div></div>

<p><b>Note:</b> El efecto tiene un retraso de 1s antes de comenzar.</p>
</body>
</html>

Resumen

PropiedadDescripción
transitionUna propiedad abreviada para configurar las cuatro propiedades de transición en una sola propiedad
transition-delayEspecifica un retraso (en segundos) para el efecto de transición
transition-durationEspecifica cuántos segundos o milisegundos tarda en completarse un efecto de transición
transition-propertyEspecifica el nombre de la propiedad CSS para el efecto de transición
transition-timing-functionEspecifica la curva de velocidad del efecto de transición.
Scroll al inicio