Saltar al contenido principal

Bordes, sombras y gradientes

En este capítulo vamos a explorar algunas de las nuevas características de CSS3 como bordes redondeados, sombras para cajas y textos, y gradientes.

Antes se utilizaban trucos para lograr el mismo efecto con imágenes pero ahora con CSS3 tenemos una forma más fácil y estándar de hacerlo.

Bordes redondeados

Veamos primero un ejemplo de bordes redondeados (consulta el HTML y CSS en la pestaña respectiva):

{% embed url="https://codepen.io/germanescobar/pen/QampxP" %}

Para crear bordes redondeados utiliza la propiedad border-radius.

border-radius recibe un tamaño (puede ser en pixeles, rems, etc.) como valor.

Por ejemplo, para aplicar un borde redondeado con radio de 5px a un div con clase redondeado utilizarías la siguiente regla:

div.redondeado {
border-radius: 5px;
}

También puedes aplicarle bordes redondeados a cada esquina individualmente utilizando las siguientes propiedades:

  • border-top-left-radius
  • border-top-right-radius
  • border-bottom-left-radius
  • border-bottom-left-radius

Sin embargo, también existen atajos que puedes utilizar con border-radius. Por ejemplo, puedes definir el tamaño de cada esquina separando los valores por espacio:

div.redondeado {
border-radius: 5px 10px 10px 20px;
}

El primer valor aplica a la esquina superior izquierda, el segundo a la superior derecha, el tercero a la inferior izquierda y el cuarto a la inferior derecha.

Cuando los valores de la esquina superior derecha e inferior izquierda son iguales podemos utilizar otro atajo:

div.redondeado {
border-radius: 5px 10px 20px;
}

El primer valor aplica a la esquina superior izquierda, el segundo a la superior derecha e inferior izquierda, y el tercero a la inferior derecha.

Si la esquina superior izquierda y la inferior derecha tuvieran el mismo valor (p.e. 5px) podríamos utilizar otro atajo:

div.redondeado {
border-radius: 5px 10px;
}

El primer valor aplica a la esquina superior izquierda y a la inferior derecha. El segundo valor a la superior derecha y a la inferior izquierda.

Sombras

Utiliza la propiedad box-shadow para agregarle sombra a una caja y text-shadow para agregarle sombra al texto.

Sombra de caja

Veamos primero un ejemplo (consulta el HTML y CSS en la pestaña respectiva):

{% embed url="https://codepen.io/germanescobar/pen/jYZKYV" %}

Para agregarle sombra a una caja utiliza la propiedad box-shadow.

box-shadow recibe los siguientes valores separados por espacio:

  • Posición horizontal (requerido) - un valor positivo ubica la sombra a la derecha de la caja mientras que uno negativo la ubica a la izquierda.
  • Posición vertical (requerido) - un valor positivo ubica la sombra debajo de la caja mientras que uno negativo la ubica encima de la caja.
  • Difuminación (opcional) - el radio de difuminación, entre mayor el número más borrosa va a ser la sombra.
  • Propagación (opcional) - el radio de propagación, un valor positivo incrementa el tamaño de la sombra mientras que uno negativo reduce el tamaño de la sombra.
  • Color (opcional) - por defecto utiliza el color de la fuente.

Sombra de texto

Veamos primero un ejemplo (consulta el HTML y CSS en la pestaña respectiva):

{% embed url="https://codepen.io/germanescobar/pen/VyXWga" %}

Para agregarle sombra al texto utiliza la propiedad text-shadow.

text-shadow recibe los siguentes valores separados por espacio:

  • Posición horizontal (requerido) - un valor positivo ubica la sombra a la derecha del texto, uno negativo a la izquierda.
  • Posición vertical (requerido) - un valor positivo ubica la sombra debajo del texto, uno negativo encima.
  • Difuminación (opcional) - el radio de difuminación, entre mayor el número, más borrosa la sombra.
  • Color (opcional) - por defecto utiliza el color de la fuente.

Gradientes

Los gradientes te permiten realizar transiciones entre dos o más colores.

Existen dos tipos de gradientes:

  • Lineales
  • Radiales

Gradientes lineales

Para crear un gradiente lineal utiliza la función linear-gradient en la propiedad background o background-image:

.gradiente {
background: linear-gradient(red, orange);
}

Por defecto la dirección es de arriba hacia abajo:

{% embed url="https://codepen.io/germanescobar/pen/bavrNv" %}

Dirección

Para cambiar la dirección puedes pasarle un primer argumento a linear-gradient. Los posibles valores son:

  • to bottom - hacia abajo (el valor por defecto).
  • to top - hacia arriba.
  • to right - hacia la derecha.
  • to left - hacia la izquierda.
  • to top left - hacia la esquina superior izquierda.
  • to top right - hacia la esquina superior derecha.
  • to bottom left - hacia la esquina inferior izquierda.
  • to bottom right - hacia la esquina inferior derecha.
  • Un ángulo (p.e. 90deg, -45deg, etc.)

Múltiples colores

Puedes utilizar más de dos colores en tu gradiente:

.gradiente {
background: linear-gradient(to right, blue, red, yellow, green);
}

Veamos este ejemplo en Codepen:

{% embed url="https://codepen.io/germanescobar/pen/Ozwdjv" %}

También puedes cambiar la ubicación donde cambia cada color:

.gradiente {
background: linear-gradient(to right, blue 20%, red 60%, yellow, green);
}

{% embed url="https://codepen.io/germanescobar/pen/JMBxMK" %}

Transparencias

Los gradientes soportan transparencias que se pueden utilizar para crear efectos interesantes. El siguiente gradiente inicia completamente transparente y termina en un rojo total:

.gradiente {
background: linear-gradient(to right, rgba(255, 0, 0, 0), rgba(255, 0, 0, 1));
}

{% embed url="https://codepen.io/germanescobar/pen/wpxNYY" %}

Gradientes radiales

Para crear un gradiente radial utiliza la función radial-gradient en la propiedad background o background-image:

.gradiente {
background: radial-gradient(red, yellow);
}

Por defecto el gradiente inicia en el centro de la caja y tiene forma de elipse:

{% embed url="https://codepen.io/germanescobar/pen/zpLeXB" %}

Si quieres cambiar el centro del gradiente puedes pasarle un primer argumento a radial-gradient:

.gradiente {
background: radial-gradient(at 20px 20px, red, yellow);
}

Veamos este ejemplo en Codepen:

{% embed url="https://codepen.io/germanescobar/pen/ZvjPzb" %}

Además de posiciones exactas puedes utilizar top, right, bottom, left, top right, etc.

También puedes cambiar la forma del gradiente a un círculo de la siguiente forma:

.gradiente {
background: radial-gradient(circle at 20px 20px, red, yellow);
}