CSS. Unidad 2. Estilos de texto y fuente de letra.

Presentación

Infografía

Diapositivas y vídeo

A través de esta presentación, estas diapositivas, y este vídeo, te familiarizarás con los contenidos clave de esta unidad.

Introducción

En esta unidad repasaremos en detalle todos los fundamentos básicos del estilo de texto y fuentes, incluyendo la configuración del peso (o grueso) de la fuente, familia y estilo, la propiedad abreviada (shorthand) de fuente, alineación de texto y otros efectos, así como el espaciado entre líneas y letras.

¿Qué implica dar estilo al texto en CSS?

Las propiedades CSS utilizadas para dar estilo al texto generalmente se dividen en dos categorías, que veremos por separado en esta unidad:

  • Estilos de fuente: Propiedades que afectan a la fuente que se aplica al texto, influyendo qué tipografía se usa, qué tamaño tiene, si es negrita, cursiva, etc.
  • Estilos de diseño de texto: Propiedades que afectan al espaciado y otras características de diseño del texto, permitiendo manipular, por ejemplo, el espacio entre líneas y letras, y cómo se alinea el texto dentro del cuadro de contenido.

Debemos tener en cuenta que el texto dentro de un elemento se ve afectado como una sola entidad. No podemos seleccionar y dar estilo a subsecciones de texto a menos que las incluyamos dentro de otro elemento (<span> o <strong>, por ejemplo).

Color de la fuente

Pasemos directamente a ver las propiedades para estilizar fuentes. En esta sección aplicaremos diferentes propiedades CSS a la misma muestra HTML.

La propiedad color establece el color del contenido en primer plano de los elementos seleccionados (que generalmente es el texto, pero también puede incluir otras cosas, como un subrayado o una línea superior colocada en el texto usando la propiedad text-decoration):

p {
  color: red;
}

Ejercicio propuesto

Crea una nueva página web compuesta por 2 archivos: un archivo HTML con el código de abajo, y otro con algún código CSS para cambiar los elementos <h1> y <p> a cualquier color que te guste. No olvides vincular el archivo CSS desde el archivo HTML y validar tu código.

<h1>Tommy el gato</h1>

<p>Bien recuerdo que fue hace como una comida...</p>

<p>Dijo Tommy el Gato mientras se tambaleaba hacia atrás para despejar cualquier materia extraña que pudiera haberse anidado en su poderosa garganta. Muchas ratas gordas de callejón habían encontrado su fin mientras miraban a quemarropa el cavernoso cañón de esta impresionante máquina merodeadora. Verdaderamente una maravilla de la naturaleza este depredador urbano — Tommy el gato tenía muchas historias que contar. Pero fue en una rara ocasión como esta que lo hizo.</p>

Familias de fuentes

Para establecer una fuente diferente en tu texto, puedes usar la propiedad font-family — esto te permite especificar una fuente (o lista de fuentes) para que el navegador la aplique a los elementos seleccionados. El navegador solo aplicará una fuente si está disponible en el ordenador o dispositivo desde donde se accede al sitio web; si no, simplemente usará una fuente predeterminada del navegador. Un ejemplo muy simple para utilizar la fuente «Arial» podría ser el siguiente:

p {
  font-family: arial;
}

Esto haría que todos los párrafos de una página adopten la fuente Arial, que debería estar disponible en la mayoría de ordenadores o dispositivos que permiten utilizar un navegador web.

Fuentes predeterminadas

CSS define cinco nombres genéricos para fuentes: serif, sans-serif, monospace, cursive y fantasy. Estos son muy genéricos y el tipo de letra exacto utilizado al usar esos nombres depende de cada navegador y puede variar para cada sistema operativo en el que se estén ejecutando. El navegador intentará proporcionar al menos una fuente que parezca apropiada. Por un lado, los tipos serif, sans-serif y monospace son bastante predecibles y deberían proporcionar algo razonable. Por otro lado, cursive y fantasy son menos predecibles y recomendamos usarlos sólo si se ha comprobado el resultado previamente.

Los cinco nombres se definen de la siguiente manera (encontrarás abajo algunos ejemplos de cómo se ven):

  • serif: Fuentes que tienen remates (los adornos y otros pequeños detalles que ves al final de los trazos en algunas tipografías).
  • sans-serif: Fuentes que no tienen remates (sin serifa).
  • monospace: Fuentes donde cada carácter tiene el mismo ancho, típicamente usadas en listados de código.
  • cursive: Fuentes que pretenden emular la escritura a mano, con trazos fluidos y conectados.
  • fantasy: Fuentes que pretenden ser decorativas.
  • Esto es serif
  • Esto es sans-serif
  • Esto es monospace
  • Esto es cursive
  • Esto es fantasy

Ejercicio propuesto: Fuentes predeterminadas

Usando el código del ejercicio anterior, copia y pega los párrafos varias veces (5 en total) y define algunas clases para aplicar todas las fuentes predeterminadas (serif, sans-serif, monospace, cursive, fantasy). Debes establecer una fuente y color diferente cada vez. Tu código fuente y el resultado deberían parecerse a lo siguiente:

Código HTML:

<h1>Tommy el gato</h1>

<p class="serif">Bien recuerdo que fue hace como una comida...</p>
<p class="serif">Dijo Tommy el Gato mientras se tambaleaba hacia atrás para despejar cualquier materia extraña que pudiera haberse anidado en su poderosa garganta. Muchas ratas gordas de callejón habían encontrado su fin mientras miraban a quemarropa el cavernoso cañón de esta impresionante máquina merodeadora. Verdaderamente una maravilla de la naturaleza este depredador urbano — Tommy el gato tenía muchas historias que contar. Pero fue en una rara ocasión como esta que lo hizo.</p>

...

<p class="fantasy">Bien recuerdo que fue hace como una comida...</p>
<p class="fantasy">Dijo Tommy el Gato mientras se tambaleaba hacia atrás para despejar cualquier materia extraña que pudiera haberse anidado en su poderosa garganta. Muchas ratas gordas de callejón habían encontrado su fin mientras miraban a quemarropa el cavernoso cañón de esta impresionante máquina merodeadora. Verdaderamente una maravilla de la naturaleza este depredador urbano — Tommy el gato tenía muchas historias que contar. Pero fue en una rara ocasión como esta que lo hizo.</p>

Código CSS:

.serif {
    font-family: serif;
    color: blue;
}

...

.fantasy {
    font-family: fantasy;
    color: green;
}

Y el resultado:

Tommy el gato

Bien recuerdo que fue hace como una comida…

Dijo Tommy el Gato mientras se tambaleaba hacia atrás para despejar cualquier materia extraña que pudiera haberse anidado en su poderosa garganta. Muchas ratas gordas de callejón habían encontrado su fin mientras miraban a quemarropa el cavernoso cañón de esta impresionante máquina merodeadora. Verdaderamente una maravilla de la naturaleza este depredador urbano — Tommy el gato tenía muchas historias que contar. Pero fue en una rara ocasión como esta que lo hizo.

Bien recuerdo que fue hace como una comida…

Dijo Tommy el Gato mientras se tambaleaba hacia atrás para despejar cualquier materia extraña que pudiera haberse anidado en su poderosa garganta. Muchas ratas gordas de callejón habían encontrado su fin mientras miraban a quemarropa el cavernoso cañón de esta impresionante máquina merodeadora. Verdaderamente una maravilla de la naturaleza este depredador urbano — Tommy el gato tenía muchas historias que contar. Pero fue en una rara ocasión como esta que lo hizo.

Fuentes seguras para la web

Cuando nos referimos a la disponibilidad de fuentes, solo hay un cierto número de fuentes que están generalmente disponibles en todos los sistemas y, por lo tanto, se pueden usar sin mucha preocupación. Estas son las llamadas fuentes seguras para la web.

La mayoría de las veces, como desarrolladores web queremos tener un control más específico sobre las fuentes utilizadas para mostrar nuestro contenido de texto. El problema es encontrar una manera de saber qué fuente está disponible en el ordenador o dispositivo utilizado para ver nuestras páginas web. No hay forma de saber esto en todos los casos, pero las fuentes seguras para la web se sabe que están disponibles en casi todas las instancias de los sistemas operativos más usados (Windows, macOS, las distribuciones de Linux más comunes, Android e iOS).

La lista de fuentes seguras reales cambiará a medida que los sistemas operativos evolucionen, pero es razonable considerar las siguientes fuentes como seguras, al menos por ahora (muchas de ellas se popularizaron gracias a la iniciativa de Microsoft Core fonts for the Web a finales de los 90 y principios de los 2000):

  • Arial (sans-serif)
  • Courier New (monospace)
  • Georgia (serif)
  • Times New Roman (serif)
  • Trebuchet MS (sans-serif)
  • Verdana (sans-serif)

Entre varios recursos, el sitio web cssfontstack.com mantiene una lista de fuentes seguras disponibles en sistemas operativos Windows y macOS, lo que puede ayudarte a tomar la decisión sobre qué consideras seguro para tu uso.

Ejercicio propuesto: Fuentes seguras más habituales

Crea una nueva página web con un encabezado (<h1>) y otros seis párrafos (<p>) con cualquier contenido que te guste, y establece una fuente diferente para cada uno de ellos (Arial, Courier New, Georgia, Times New Roman, Trebuchet MS, Verdana). También puedes cambiar el color del texto.

Los nombres de fuentes que tienen más de una palabra (como Trebuchet MS) deben estar acotados por comillas, por ejemplo:

font-family: "Trebuchet MS";

Pilas de fuentes

Dado que no puedes garantizar la disponibilidad de las fuentes que quieres usar en tus páginas web (incluso una fuente web podría fallar por alguna razón), puedes suministrar una pila de fuentes para que el navegador tenga múltiples fuentes de donde elegir. Esto simplemente implica un valor de font-family que consiste en múltiples nombres de fuentes separados por comas, por ejemplo:

p {
  font-family: "Trebuchet MS", Verdana, sans-serif;
}

En tal caso, el navegador comienza al inicio de la lista y verifica si esa fuente está disponible en el ordenador o dispositivo correspondiente. Si es así, aplica esa fuente a los elementos seleccionados. Si no, pasa a la siguiente fuente, y así sucesivamente.

Es una buena idea proporcionar un nombre de fuente genérica adecuada al final de la pila para que, si ninguna de las fuentes listadas está disponible, el navegador pueda al menos proporcionar algo aproximadamente adecuado. En este punto conviene enfatizar que la fuente por defecto aplicada al texto de los párrafos de una página web suele ser de tipo serif, en muchos casos Times New Roman.

Ejercicio propuesto: Más fuentes seguras y pilas de fuentes

Crea una nueva página web con un encabezado y otros cinco párrafos con cualquier contenido que te guste, y establece una fuente diferente para cada uno de ellos, pero esta vez no puedes utilizar ninguna fuente usada anteriormente: debes seleccionar otras fuentes de cssfontstack.com. Además, en este ejercicio tienes que usar pilas de fuentes para asegurar que al menos una fuente esté siempre disponible, y también puedes cambiar el color. Finalmente, verifica tu página web usando varios navegadores desde varios dispositivos y sistemas operativos, para asegurarte de que todas las fuentes se muestran.

Si estás cambiando el color y la familia de fuentes usando pilas de fuentes, tu código CSS y HTML debería parecerse al siguiente:

.font-book {
  color: blue;
  font-family: "Book Antiqua", Arial, sans-serif;
}
<p class="font-book"> ... </p>

Usar un servicio de fuentes online

Los servicios de fuentes online generalmente almacenan y sirven fuentes para ti, por lo que no tienes que preocuparte por la disponibilidad de la fuente, y generalmente solo necesitas insertar una línea o dos de código en tu sitio para hacer que todo funcione. Ejemplos incluyen Adobe Fonts y Cloud.typography. La mayoría de estos servicios son por suscripción, con la notable excepción de Google Fonts, un servicio gratuito muy útil, especialmente para trabajos de prueba rápida y creación de demos.

La mayoría de estos servicios son fáciles de usar, por lo que no los cubriremos en gran detalle. Echemos un vistazo rápido a Google Fonts, para que te hagas una idea. Estos son los pasos que tienes que seguir para usar una o varias de las fuentes que proporcionan:

  1. Ve a Google Fonts.
  2. Puedes usar los filtros para mostrar los tipos de fuentes que te gusten.
  3. Para seleccionar una familia de fuentes, haz clic en ella.
  4. Una vez que hayas seleccionado la fuente, presiona el botón Get font en la esquina superior derecha.
  5. Presiona ahora el botón <> Get embed code en la esquina superior derecha.
  6. Copia el código que se muestra dentro del cuadro etiquetado como Embed code in the <head> of your html. Esos son los enlaces a la fuente seleccionada.
  7. Pega el código en el head de tu archivo HTML. Ponlo encima de los elementos <link> existentes que puedas tener en tu página web, para que la fuente se importe antes de que intentes usarla en tu propio CSS.
  8. Luego necesitas seleccionar la fuente usando una declaración CSS dentro de tu CSS para aplicar la fuente personalizada a tu HTML, como por ejemplo: font-family: "Permanent Marker";

Ejercicio propuesto: Google fonts

Crea una página web con diez párrafos, cada uno usando una fuente de Google diferente.

Por ejemplo, para usar las fuentes de Google «Nerko One», «Permanent Marker» y «Rock Salt», tu código HTML debería parecerse al siguiente:

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Ejemplo de fuentes de texto</title>
    <link rel="preconnect" href="https://fonts.gstatic.com">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nerko+One&family=Permanent+Marker&family=Rock+Salt&display=swap">
    <link rel="stylesheet" href="styles.css">
  </head>
  <body>
    <h1>Ejemplo de fuentes de texto</h1>
    <p class="nerko">Este es un texto con la fuente Nerko One</p>
    <p class="marker">Este es un texto con la fuente Permanent Marker</p>
    <p class="rock">Este es un texto con la fuente Rock Salt</p>
  </body>
</html>

Y el código CSS dentro de tu propio archivo styles.css podría ser el siguiente:

.nerko {
  font-family: 'Nerko One', cursive;
}
.marker {
  font-family: 'Permanent Marker', cursive;
}
.rock {
  font-family: 'Rock Salt', cursive;
}

Y el resultado:

Este es un texto con la fuente Nerko One

Este es un texto con la fuente Permanent Market

Este es un texto con la fuente Rock Salt

Tamaño de la fuente

El tamaño de la fuente (establecido con la propiedad font-size) puede tomar valores medidos en varias unidades (como porcentajes), sin embargo, las unidades más comunes que se suelen utilizar para dimensionar texto son:

  • px (píxeles): El número de píxeles de alto que quieres que sea el texto (esta es una unidad absoluta).
  • em: 1 em es igual al tamaño de fuente establecido en el elemento padre del elemento actual que estamos estilizando (más específicamente, el ancho de una letra M mayúscula contenida dentro del elemento padre). Esto puede volverse complicado de calcular si tienes muchos elementos anidados con diferentes tamaños de fuente establecidos, pero es bastante natural una vez que te acostumbras, y puedes usar em para dimensionar todo, no solo texto. Puedes tener un sitio web completo dimensionado usando em, lo cual facilita el mantenimiento.
  • rem: Estos funcionan igual que em, excepto que 1 rem es igual al tamaño de fuente establecido en el elemento raíz del documento (es decir, <html>), no el elemento padre. Esto hace que resulte mucho más fácil calcular tus tamaños de fuente, aunque si quieres soportar navegadores realmente antiguos, podrías tener problemas (rem no es compatible con Internet Explorer 8 y versiones anteriores).

Tamaño absoluto (píxeles)

La forma más fácil de cambiar el tamaño de tu texto es estableciendo un número específico de píxeles. Sin embargo, esta podría no ser la mejor solución, ya que en caso de que quieras aumentar (o disminuir) el tamaño de todo el texto en tu sitio web, deberías cambiar cada valor manualmente (una vez por cada regla CSS). Así que, vamos a seguir adelante con un primer ejercicio usando píxeles, pero después de eso usaremos una forma más conveniente en otro ejercicio usando valores relativos.

Ejercicio propuesto: Tamaño absoluto con «px»

Crea una nueva página web con al menos 15 párrafos de algún texto que te guste, y establece el tamaño de la fuente para cada párrafo un poco más grande cada vez. Debes usar píxeles para establecer cada tamaño de fuente.

Tu código fuente y el resultado deberían parecerse al que se muestra a continuación (puedes elegir cualquier nombre de clase, colores y tamaños que te gusten):

.ten {
  color: black;
  font-size: 10px;
}

.eleven {
  color: blue;
  font-size: 11px;
}

.twelve {
  color: green;
  font-size: 12px;
}

.thirteen {
  color: brown;
  font-size: 13px;
}

...
<p class="ten">Este es un texto con tamaño de fuente de 10 px</p>
<p class="eleven">Este es un texto con tamaño de fuente de 11 px</p>
<p class="twelve">Este es un texto con tamaño de fuente de 12 px</p>
<p class="thirteen">Este es un texto con tamaño de fuente de 13 px</p>
...

Este es un texto con tamaño de fuente 10 px

Este es un texto con tamaño de fuente 11 px

Este es un texto con tamaño de fuente 12 px

Este es un texto con tamaño de fuente 13 px

Este es un texto con tamaño de fuente 14 px

Tamaño relativo («em» y «rem»)

El font-size de un elemento se hereda del elemento padre de ese elemento. Todo esto comienza con el elemento raíz de todo el documento (<html>), cuyo font-size está establecido en 16 px como estándar en todos los navegadores. Cualquier párrafo (u otro elemento que no tenga un tamaño diferente establecido por el navegador) dentro del elemento raíz tendrá un tamaño final de 16 px. Otros elementos pueden tener diferentes tamaños predeterminados, por ejemplo, un elemento <h1> tiene un tamaño de 2 em establecido por defecto, por lo que tendrá un tamaño final de 32 px.

Las cosas se vuelven más complicadas cuando empiezas a alterar el tamaño de fuente de elementos anidados. Por ejemplo, si tuvieras un elemento <article> en tu página, y establecieras su font-size a 1.5 em (lo que resultaría en un tamaño final de 24 px), y luego quisieras que los párrafos dentro de los elementos <article> tuvieran un tamaño de fuente calculado de 20 px, ¿qué valor em usarías?

<!-- El tamaño base para todo el documento es de 16px -->
<article> <!-- Si el font-size de este elemento es 1.5em -->
  <p>My paragraph</p> <!-- ¿Cómo podríamos obtener un tamaño de fuente de 20px aquí? -->
</article>

Necesitarías establecer su valor em a 20/24, o 0.83333333 em. Las matemáticas pueden ser complicadas, así que necesitas tener cuidado sobre cómo estilizas las cosas. Es mejor usar rem donde puedas, para mantener las cosas simples, y evitar establecer el font-size de elementos contenedores donde sea posible.

Al dimensionar tu texto, suele ser una buena idea establecer el font-size base del documento a 10px, para que luego las matemáticas sean mucho más fáciles de calcular (los valores (r)em requeridos son entonces el tamaño de fuente en píxeles dividido por 10, no 16). Después de hacer eso, puedes dimensionar fácilmente los diferentes tipos de texto en tu documento a lo que quieras. También es una buena idea listar todos tus conjuntos de reglas de font-size en un área designada en tu hoja de estilos, para que sean fáciles de encontrar.

Ejercicio propuesto: Tamaño relativo con «rem»

Crea una nueva página web con al menos 15 párrafos de algún texto que te guste, y establece el tamaño de la fuente para cada párrafo un poco más grande cada vez. Esta vez, debes usar tamaño relativo para establecer cada tamaño de fuente (por ejemplo, con unidades «rem»). Cuando termines de escribir tu código, verifica los resultados usando tu navegador, y establece diferentes valores para el tamaño principal (dentro del elemento html) y verifica que el tamaño de todos los párrafos cambia en consecuencia.

Tu código fuente y resultado deberían parecerse a lo siguiente (puedes elegir cualquier nombre de clase, colores y tamaños que te gusten):

html {
  color: black;
  font-size: 10px;
}

.eleven {
  color: blue;
  font-size: 1.1rem;
}

.twelve {
  color: green;
  font-size: 1.2rem;
}

.thirteen {
  color: olive;
  font-size: 1.3rem;
}

...
<p>This is a text with 1 rem font size</p>
<p class="eleven">This is a text with 1.1 rem font size</p>
<p class="twelve">This is a text with 1.2 rem font size</p>
<p class="thirteen">This is a text with 1.3 rem font size</p>
...

Este es un texto con tamaño de fuente 1 rem

Este es un texto con tamaño de fuente 1.1 rem

Este es un texto con tamaño de fuente 1.2 rem

Este es un texto con tamaño de fuente 1.3 rem

Este es un texto con tamaño de fuente 1.4 rem

Estilo de fuente, peso, transformación y decoración

CSS proporciona cuatro propiedades comunes para alterar la apariencia visual del texto:

  • font-style: Se usa para activar y desactivar la cursiva en el texto. Los valores posibles son los siguientes (rara vez usarás esto, a menos que quieras desactivar algún estilo de cursiva por alguna razón):
    • normal: Establece el texto en la fuente normal (desactiva las cursivas existentes).
    • italic: Establece el texto para usar la versión cursiva de la fuente si está disponible; si no, simulará las cursivas con oblicua en su lugar.
    • oblique: Establece el texto para usar una versión simulada de la fuente cursiva, creada inclinando la versión normal.
  • font-weight: Establece qué tan grueso o delgado debe mostrarse el texto. Esto puede tomar valores de palabras clave normal, bold, lighter, bolder, o valores numéricos de 100 a 900.
  • text-transform: Te permite configurar tu fuente para que se transforme. Los valores incluyen:
    • none: Evita cualquier transformación.
    • uppercase: Transforma todo el texto a MAYÚSCULAS.
    • lowercase: Transforma todo el texto a minúsculas.
    • capitalize: Transforma todas las palabras para que la primera letra sea Mayúscula.
    • full-width: Transforma todos los glifos para que se escriban dentro de un cuadrado de ancho fijo, similar a una fuente monoespaciada, permitiendo alinear glifos latinos junto con glifos de idiomas asiáticos (como chino, japonés, coreano).
  • text-decoration: Establece o desactiva las decoraciones de texto. Se utiliza principalmente text-decoration: none; para eliminar el subrayado predeterminado de los enlaces al estilizarlos. También puedes usar underline (subrayado), overline (línea superior), y line-through (tachado). Ten en cuenta que text-decoration puede aceptar múltiples valores a la vez, por ejemplo text-decoration: underline overline. También ten en cuenta que text-decoration es una propiedad abreviada para text-decoration-line, text-decoration-style, y text-decoration-color. Puedes usar combinaciones de estos valores de propiedad para crear efectos interesantes, como por ejemplo:
p {
  font-size: 1.5rem;
  font-family: sans-serif;
  font-weight: bold;
  text-transform: uppercase;
  text-decoration: underline red wavy;
}

Este es un texto con tamaño grande, fuente sans-serif, en negrita y mayúsculas con una decoración de subrayado con línea roja ondulada.

Ejercicio propuesto: Estilo, peso, transformación y decoración

Crea un sitio web con al menos 15 párrafos para mostrar la mayoría de los valores que se pueden usar con las propiedades font-style, font-weight, font-transform y font-decoration.

Este es un ejemplo del resultado que deberías obtener (puedes elegir tus propias combinaciones):

Este es un texto normal

Este es un texto en cursiva

Este es un texto en negrita

Este es un texto en mayúsculas y cursiva

Este es un texto en negrita y mayúsculas

Este es un texto capitalizado con un peso de 500

Este es un texto capitalizado con un peso de 600

Este es un texto capitalizado con un peso de 700

Este es un texto capitalizado con un peso de 800

Este es un texto capitalizado con un peso de 900

Este es un texto en mayúsculas negrita con una línea naranja de subrayado como decoración

Este es un texto en mayúsculas negrita con una línea azul de subrayado como decoración

Este es un texto capitalizado negrita con una línea roja ondulada de subrayado

Este es un texto en mayúsculas negrita subrayado y también con línea roja tachada

Sombras de texto

Puedes aplicar sombras proyectadas a tu texto usando la propiedad text-shadow. Esto toma hasta cuatro valores, como se muestra en el ejemplo a continuación:

text-shadow: 4px 4px 5px red;

Las cuatro propiedades son las siguientes:

  1. El desplazamiento horizontal de la sombra desde el texto original. Esto puede tomar la mayoría de las unidades de longitud y tamaño disponibles en CSS, pero usarás más comúnmente px. Los valores positivos mueven la sombra a la derecha, y los valores negativos a la izquierda. Este valor debe incluirse.
  2. El desplazamiento vertical de la sombra desde el texto original; se comporta básicamente igual que el desplazamiento horizontal, excepto que mueve la sombra hacia arriba/abajo, no izquierda/derecha. Este valor debe incluirse.
  3. El radio de difuminado. Un valor más alto significa que la sombra se dispersa más ampliamente. Si este valor no se incluye, por defecto es 0, lo que significa que no tendrá difuminado. Esto puede tomar la mayoría de las unidades de longitud y tamaño disponibles en CSS.
  4. El color base de la sombra, que puede tomar cualquier unidad de color CSS. Si no se incluye, por defecto es currentColor, es decir, el color de la sombra se toma de la propiedad color del elemento.

También puedes aplicar múltiples sombras al mismo texto incluyendo múltiples valores de sombra separados por comas, por ejemplo:

text-shadow: 1px 1px 1px red,
             2px 2px 1px red;

Ejercicio propuesto: Sombras simples

Crea un sitio web con al menos 15 párrafos con sombras, cada uno con diferentes desplazamientos y colores. También puedes cambiar cualquier otra propiedad que te guste, como la familia de fuentes. Deberías usar Google Fonts para asegurarte de que todo se muestra de la manera correcta para todos los sistemas operativos y navegadores.

Este es un ejemplo del resultado que deberías obtener (puedes elegir tus propias combinaciones):

Este es un texto blanco con fuente Permanent Marker y sombra negra de 2 px de desplazamiento con 5 px de difuminado

Este es un texto con fuente Permanent Marker y sombra amarilla de 2 px de desplazamiento sin difuminado

Este es un texto con fuente Permanent Marker y sombra amarilla de 3 px de desplazamiento con 5 px de difuminado

Este es un texto con fuente Nerko One y sombra naranja de 2 px de desplazamiento sin difuminado

Este es un texto con fuente Nerko One y sombra naranja de 2 px de desplazamiento con 5 px de difuminado

Este es un texto en negrita con fuente Rock Salt y sombra roja de 2 px de desplazamiento sin difuminado

Este es un texto en negrita con fuente Rock Salt y sombra roja de 2 px de desplazamiento con 5 px de difuminado

Ejercicio propuesto: Sombras múltiples

Crea un sitio web con al menos 10 párrafos, cada uno con múltiples sombras y también diferentes desplazamientos y colores. También puedes cambiar cualquier otra propiedad que te guste, como la familia de fuentes y el tamaño de fuente. Deberías usar Google Fonts para asegurarte de que todo se muestra de la manera correcta para todos los sistemas operativos y navegadores.

Este es un ejemplo del resultado que deberías obtener (puedes elegir tus propias combinaciones):

Este es un texto blanco en negrita con fuente Sedgwick Ave y sombra roja de 1 px de desplazamiento y sombra negra de 3 px de desplazamiento con 5 px de difuminado

Este es un texto en negrita con fuente Sedgwick Ave y sombra amarilla de 2 px de desplazamiento y también una sombra azul de 3 px de desplazamiento sin difuminado

Este es un texto en negrita con fuente Sedgwick Ave y sombra amarilla de 3 px de desplazamiento y también una sombra azul de 6 px de desplazamiento con 5 px de difuminado

Este es un texto con fuente Lakki Reddy y sombra naranja de 1 px de desplazamiento y también una sombra roja de 2 px de desplazamiento sin difuminado

Este es un texto con fuente Lakki Reddy y sombra naranja de 3 px de desplazamiento y también una sombra roja de 6 px de desplazamiento con 5 px de difuminado

Este es un texto naranja en negrita con fuente Gloria Hallelujah y sombra roja de 2 px de desplazamiento y también una sombra azul de 4 px de desplazamiento sin difuminado

Este es un texto naranja en negrita con fuente Gloria Hallelujah y sombra roja de 3 px de desplazamiento y también una sombra azul de 6 px con 5 px de difuminado

Alineación de texto

La propiedad text-align se usa para controlar cómo se alinea el texto dentro de su cuadro de contenido contenedor. Los valores disponibles son los siguientes, y funcionan casi de la misma manera que lo hacen en una aplicación regular de procesador de textos:

  • left: Justifica el texto a la izquierda.
  • right: Justifica el texto a la derecha.
  • center: Centra el texto.
  • justify: Hace que el texto se expanda, variando los espacios entre las palabras para que todas las líneas de texto tengan el mismo ancho. Necesitas usar esto con cuidado, ya que a veces puede verse terrible, especialmente cuando se aplica a un párrafo con muchas palabras largas. Si vas a usar esto, también deberías pensar en usar algo más junto con ello, como hyphens, para romper algunas de las palabras más largas a través de las líneas.

Por ejemplo, puedes centrar algún texto simplemente usando el siguiente código CSS:

text-align: center;

Ejercicio propuesto: Tipos de alineación

Crea una página web con 4 encabezados y 4 párrafos, cada uno con un tipo de alineación diferente.

Puedes usar cualquier texto que te guste, pero teniendo en cuenta que debes insertar varias líneas para ver correctamente cómo se realiza la alineación:

Esto es alineación izquierda

Bien recuerdo que fue hace como una comida… Dijo Tommy el Gato mientras se tambaleaba hacia atrás para despejar cualquier materia extraña que pudiera haberse anidado en su poderosa garganta. Muchas ratas gordas de callejón habían encontrado su fin mientras miraban a quemarropa el cavernoso cañón de esta impresionante máquina merodeadora. Verdaderamente una maravilla de la naturaleza este depredador urbano. Tommy el gato tenía muchas historias que contar. Pero fue en una rara ocasión como esta que lo hizo.

Esto es alineación derecha

Bien recuerdo que fue hace como una comida… Dijo Tommy el Gato mientras se tambaleaba hacia atrás para despejar cualquier materia extraña que pudiera haberse anidado en su poderosa garganta. Muchas ratas gordas de callejón habían encontrado su fin mientras miraban a quemarropa el cavernoso cañón de esta impresionante máquina merodeadora. Verdaderamente una maravilla de la naturaleza este depredador urbano. Tommy el gato tenía muchas historias que contar. Pero fue en una rara ocasión como esta que lo hizo.

Esto es alineación centrada

Bien recuerdo que fue hace como una comida… Dijo Tommy el Gato mientras se tambaleaba hacia atrás para despejar cualquier materia extraña que pudiera haberse anidado en su poderosa garganta. Muchas ratas gordas de callejón habían encontrado su fin mientras miraban a quemarropa el cavernoso cañón de esta impresionante máquina merodeadora. Verdaderamente una maravilla de la naturaleza este depredador urbano. Tommy el gato tenía muchas historias que contar. Pero fue en una rara ocasión como esta que lo hizo.

Esto es alineación justificada

Bien recuerdo que fue hace como una comida… Dijo Tommy el Gato mientras se tambaleaba hacia atrás para despejar cualquier materia extraña que pudiera haberse anidado en su poderosa garganta. Muchas ratas gordas de callejón habían encontrado su fin mientras miraban a quemarropa el cavernoso cañón de esta impresionante máquina merodeadora. Verdaderamente una maravilla de la naturaleza este depredador urbano. Tommy el gato tenía muchas historias que contar. Pero fue en una rara ocasión como esta que lo hizo.

Altura de línea

La propiedad line-height establece la altura de cada línea de texto. Esto puede ayudar a mejorar la legibilidad. A menudo se establece como un valor sin unidades (como 1.5), que actúa como un multiplicador del tamaño de la fuente.

p {
  line-height: 1.5;
}

Ejercicio propuesto: Alturas de línea

Experimenta con diferentes alturas de línea en un párrafo de texto largo para ver cómo afecta a la legibilidad. Prueba valores como 0.8, 1, 1.5 y 2.

Esto es texto con altura de línea 0.8:

Bien recuerdo que fue hace como una comida… Dijo Tommy el Gato mientras se tambaleaba hacia atrás para despejar cualquier materia extraña que pudiera haberse anidado en su poderosa garganta. Muchas ratas gordas de callejón habían encontrado su fin mientras miraban a quemarropa el cavernoso cañón de esta impresionante máquina merodeadora. Verdaderamente una maravilla de la naturaleza este depredador urbano. Tommy el gato tenía muchas historias que contar. Pero fue en una rara ocasión como esta que lo hizo.

Esto es texto con altura de línea 1.2:

Bien recuerdo que fue hace como una comida… Dijo Tommy el Gato mientras se tambaleaba hacia atrás para despejar cualquier materia extraña que pudiera haberse anidado en su poderosa garganta. Muchas ratas gordas de callejón habían encontrado su fin mientras miraban a quemarropa el cavernoso cañón de esta impresionante máquina merodeadora. Verdaderamente una maravilla de la naturaleza este depredador urbano. Tommy el gato tenía muchas historias que contar. Pero fue en una rara ocasión como esta que lo hizo.

Esto es texto con altura de línea 1.6:

Bien recuerdo que fue hace como una comida… Dijo Tommy el Gato mientras se tambaleaba hacia atrás para despejar cualquier materia extraña que pudiera haberse anidado en su poderosa garganta. Muchas ratas gordas de callejón habían encontrado su fin mientras miraban a quemarropa el cavernoso cañón de esta impresionante máquina merodeadora. Verdaderamente una maravilla de la naturaleza este depredador urbano. Tommy el gato tenía muchas historias que contar. Pero fue en una rara ocasión como esta que lo hizo.

Espaciado entre letras y palabras

Las propiedades letter-spacing y word-spacing te permiten establecer el espaciado entre letras y palabras en tu texto. No usarás esto muy a menudo, pero podrías encontrar un uso para obtener una cierta apariencia, o para mejorar la legibilidad de una fuente particularmente densa. Pueden tomar la mayoría de las unidades de longitud y tamaño.

Así que como ejemplo, podríamos aplicar algo de word-spacing y letter-spacing así:

word-spacing: 4px;
letter-spacing: 4px;

Ejercicio propuesto: Espaciado

Crea una página web con al menos 2 encabezados y 2 párrafos, cada uno con diferente espaciado de palabras y letras (puedes elegir los valores que quieras).

Este texto tiene 10 px de espaciado de palabras:

Bien recuerdo que fue hace como una comida… Dijo Tommy el Gato mientras se tambaleaba hacia atrás para despejar cualquier materia extraña que pudiera haberse anidado en su poderosa garganta. Muchas ratas gordas de callejón habían encontrado su fin mientras miraban a quemarropa el cavernoso cañón de esta impresionante máquina merodeadora. Verdaderamente una maravilla de la naturaleza este depredador urbano. Tommy el gato tenía muchas historias que contar. Pero fue en una rara ocasión como esta que lo hizo.

Este texto tiene 5 px de espaciado de letras:

Bien recuerdo que fue hace como una comida… Dijo Tommy el Gato mientras se tambaleaba hacia atrás para despejar cualquier materia extraña que pudiera haberse anidado en su poderosa garganta. Muchas ratas gordas de callejón habían encontrado su fin mientras miraban a quemarropa el cavernoso cañón de esta impresionante máquina merodeadora. Verdaderamente una maravilla de la naturaleza este depredador urbano. Tommy el gato tenía muchas historias que contar. Pero fue en una rara ocasión como esta que lo hizo.

Especificación de fuente abreviada

Muchas propiedades de fuente también se pueden establecer a través de la propiedad abreviada (shorthand) font. Estas son: font-style, font-variant, font-weight, font-stretch, font-size, line-height, y font-family.

Si quieres usar estas propiedades abreviadas, hay algunas cosas que debes tener en cuenta:

  • Debes especificar valores para estas propiedades en el siguiente orden: font-style, font-variant, font-weight, font-stretch, font-size, line-height, y font-family.
  • Si omites valores para cualquier propiedad, se usará el valor predeterminado (o heredado), excepto para font-size y font-family, que son obligatorios.
  • Se requiere una barra inclinada (/) entre font-size y line-height.

Un ejemplo completo podría ser el siguiente:

p {
  font: italic bold 16px/1.5 "Courier New", monospace;
}

Ejercicio propuesto: Propiedades de fuente en una línea

Intenta reescribir el CSS de uno de tus ejercicios anteriores usando la propiedad abreviada font siempre que sea posible.

Otras propiedades que vale la pena mirar

En esta unidad queríamos cubrir sólo las propiedades más importantes. Una vez que te hayas acostumbrado a usar las anteriores, también deberías echar un vistazo a las siguientes propiedades:

Estilos de fuente:

  • font-variant: Cambia entre alternativas de versalitas y fuentes normales.
  • font-kerning: Activa y desactiva las opciones de interletraje de fuente.
  • font-feature-settings: Activa y desactiva varias características de fuentes OpenType.
  • font-variant-alternates: Controla el uso de glifos alternativos para una tipografía dada.
  • font-variant-caps: Controla el uso de glifos de mayúsculas alternativos.
  • font-variant-east-asian: Controla el uso de glifos alternativos para escrituras de Asia Oriental, como japonés y chino.
  • font-variant-ligatures: Controla qué ligaduras y formas contextuales se utilizan en el texto.
  • font-variant-numeric: Controla el uso de glifos alternativos para números, fracciones y marcadores ordinales.
  • font-variant-position: Controla el uso de glifos alternativos de tamaños más pequeños posicionados como superíndice o subíndice.
  • font-size-adjust: Ajusta el tamaño visual de la fuente independientemente de su tamaño de fuente real.
  • font-stretch: Cambia entre posibles versiones estiradas alternativas de una fuente dada.
  • text-underline-position: Especifica la posición de los subrayados establecidos usando el valor underline de la propiedad text-decoration-line.
  • text-rendering: Intenta realizar alguna optimización de renderizado de texto.

Estilos de diseño de texto:

  • text-indent: Especifica cuánto espacio horizontal se debe dejar antes del comienzo de la primera línea del contenido de texto.
  • text-overflow: Define cómo se señala a los usuarios el contenido desbordado que no se muestra.
  • white-space: Define cómo se manejan los espacios en blanco y los saltos de línea asociados dentro del elemento.
  • word-break: Especifica si se deben partir las líneas dentro de las palabras.
  • direction: Define la dirección del texto (esto depende del idioma y generalmente es mejor dejar que HTML maneje esa parte ya que está ligada al contenido del texto).
  • hyphens: Activa y desactiva la separación silábica para los idiomas compatibles.
  • line-break: Suaviza o refuerza el salto de línea para idiomas asiáticos.
  • text-align-last: Define cómo se alinea la última línea de un bloque o una línea, justo antes de un salto de línea forzado.
  • text-orientation: Define la orientación del texto en una línea.
  • overflow-wrap: Especifica si el navegador puede o no partir líneas dentro de las palabras para evitar el desbordamiento.
  • writing-mode: Define si las líneas de texto se disponen horizontal o verticalmente y la dirección en la que fluyen las líneas subsiguientes.

Test

Comprueba tus conocimientos con este test sobre los conceptos básicos de CSS, los colores y selectores tratados en esta unidad.

CSS. Unidad 1. Primeros pasos.

Presentación

Infografía

Diapositivas y vídeo

A través de esta presentación, estas diapositivas, y este vídeo, te familiarizarás con los contenidos clave de esta unidad.

Introducción

En el módulo de Introducción al HTML, puedes encontrar los conceptos básicos para saber qué es HTML y cómo se usa para definir documentos que puedan se interpretados por un navegador web. Los títulos se verán más grandes que el texto y los párrafos empezarán en una línea nueva y habrá un espacio entre ellos. Los enlaces aparecerán en un color diferente y subrayados para distinguirlos del resto del texto. Estos estilos vienen predeterminados por el navegador y, en la práctica, son estilos muy básicos que el navegador aplica al fichero HTML para asegurarse, básicamente, de que sean legibles incluso si el autor de la página no especifica un estilo explícito. Sin embargo, Internet sería un lugar muy aburrido si todas las páginas web se vieran así, con los mismos estilos por defecto. Usando CSS se pueden controlar con precisión cómo se ven los elementos HTML en el navegador, pudiendo establecer el diseño que cada uno desee.

¿Para qué sirve CSS?

Como hemos mencionado, el CSS es un lenguaje informático que especifica cómo se presentan los documentos a los usuarios: cómo se diseñan, compaginan, etc.

Un documento suele ser un archivo de texto estructurado con un lenguaje de marcado: HTML es el más común, pero también existen otros como SVG o XML.

Presentar un documento a un usuario significa convertirlo en un formulario que el público pueda utilizar. Los navegadores, como por ejemplo FirefoxChrome o Edge, están diseñados para presentar documentos visualmente en una pantalla de ordenador, un proyector o una impresora.

El código CSS se puede usar para estilos de texto muy básicos como, por ejemplo, cambiar el color y el tamaño de los encabezados y los enlaces. Se puede utilizar también para crear un diseño, como podría ser convertir una columna de texto en una composición con un área de contenido principal y una barra lateral para información relacionada. Incluso se puede usar para crear efectos de animación.

Sintaxis de CSS

CSS es un lenguaje basado en reglas: cada usuario define las reglas que especifican los grupos de estilos que van a aplicarse a elementos particulares o grupos de elementos de la página web. Por ejemplo: «Quiero que el encabezado principal de mi página se muestre con letras grandes de color rojo».

El código siguiente muestra una regla CSS muy simple que proporcionaría el estilo descrito en el párrafo anterior:

h1 {
    color: blue;
    font-size: 5em;
}

La regla se abre con un selector. Este selecciona el elemento HTML al que queremos aplicar nuestros estilos. En este caso, cambiaremos el diseño de los encabezados de nivel uno (<h1>).

Luego tenemos un conjunto de llaves { }. Entre estas habrá una o más declaraciones, que tomarán la forma de pares de propiedad y valor. Cada par especifica cada una de las propiedades de los elementos seleccionados y el valor que queremos dar a esa propiedad.

Antes de los dos puntos, tenemos la propiedad; y después, el valor. Las propiedades CSS admiten diferentes valores, dependiendo de qué propiedad se esté especificando. En el ejemplo anterior, tenemos la propiedad color, que puede tomar varios valores de color. También tenemos la propiedad de font-size, que puede tomar varias unidades de tamaño como valor.

Una hoja de estilo CSS contendrá muchas de estas reglas, escritas una tras otra:

h1 {
    color: blue;
    font-size: 5em;
}

p {
    color: green;
}

Algunos valores se aprenden rápidamente, mientras que otros son difíciles de recordar. Las páginas de propiedades individuales que hay en el proyecto MDN proporcionan una forma rápida de buscar propiedades y sus valores en caso de olvidarlos o si deseas saber qué más se puede usar como valor. Puedes encontrar enlaces a todas las páginas de las propiedades CSS (junto con otras características) enumeradas en la referencia CSS del proyecto MDN. También puedes buscar «mdn css-feature-name» en tu motor de búsqueda favorito siempre que necesites obtener más información sobre alguna particularidad de CSS. Por ejemplo, intenta buscar «mdn color» y «mdn font-size».

Añadir CSS a un documento

Lo primero que debemos hacer es decirle al documento HTML que hay algunas reglas CSS que queremos que use. Hay tres formas diferentes de aplicar CSS a un documento HTML, sin embargo, por ahora, veremos la forma más habitual y útil de hacerlo: vincular el código CSS desde el encabezado del documento. Para ello bastará con crear un archivo en la misma carpeta que el documento HTML y guardarlo como estilos.css. La extensión .css indicará que nuestro archivo contiene código CSS.

Para vincular estilos.css a index.html, bastará con añadir la siguiente línea en algún lugar dentro del <head> del documento HTML:

<link rel="stylesheet" href="estilos.css">

Este elemento <link> utiliza el atributo rel para indicarle al navegador que debe utilizar una hoja de estilo y especifica la ubicación de esa hoja de estilo con el valor del atributo href. Puedes probar si el código CSS funciona correctamente añadiendo una regla al fichero estilos.css. Para ello puedes usar cualquier editor de código para añadir lo siguiente al archivo CSS:

h1 {
  color: blue;
}

Debes tener en cuenta que después de hacer cualquier cambio, deberás guardar los archivos HTML y CSS antes de volver a cargar la página en un navegador web. Ahora el título de nivel uno de la parte superior del documento debería ser azul. Si esto es correcto, ¡felicidades!: has aplicado correctamente un poco de CSS a un documento HTML. Si no cambia el color del encabezado, verifica que hayas escrito todo correctamente.

Puedes continuar trabajando en estilos.css localmente o usar cualquier otro editor (como repl.it) para continuar con este tutorial.

Ejercicio propuesto: Enlazar ficheros y añadir estilos

Nuestro punto de partida en esta unidad es un documento HTML. Copia el código que tienes a continuación y guárdalo en un nuevo archivo HTML para trabajar en tu propio ordenador. Después de eso, crea un nuevo archivo CSS para configurar todos los títulos <h1> en color rojo y guárdalo con el nombre «estilos.css» en la misma carpeta que el documento HTML. Finalmente verifica los resultados usando un navegador y no olvides validar el código.

Recuerda que la parte más importante de este ejercicio es vincular tu archivo CSS colocando una sola línea dentro de la sección <head>. Después de eso, dentro de «estilos.css» solo necesitarás insertar tres líneas:
  1. HTML file:
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Empezando con CSS</title>

    <!-- Utilizaremos los estilos que tengamos dentro de 'estilos.css' -->
    <link rel="stylesheet" href="estilos.css">
</head>
<body>   
    <h1>Yo soy un estilo de nivel 1</h1>

    <p>Esto es un párrafo de texto.</p> 
    <p>Esto es un párrafo y también un enlace a <a href="https://google.com">Google</a>.</p>

    <ul>
        <li>Primer elemento de una lista</li>
        <li>Segundo elemento de una lista</li>
        <li>Tercer elemento de una lista</li>
    </ul>
</body>
</html>
  1. Fichero CSS (estilos.css):
h1 {
  ...
}

Ejercicio propuesto: Estilos de encabezados

Usando los archivos HTML y CSS del ejercicio anterior, añade algunos encabezados <h2> y cambia el color con el que aparecen utilizando CSS. Puedes probar varios colores y elegir el que más te guste (red, green, blue, gray, purple, olive, navy, etc). Como de costumbre, verifica los resultados con tu navegador y no olvides validar el código.

Puede encontrar las palabras clave que identifican diversos colores aquí: https://developer.mozilla.org/es/docs/Web/CSS/Reference/Values/color_value.

Dar formato a elementos HTML

Al poner nuestro título de encabezado en rojo, ya hemos demostrado que podemos elegir un elemento HTML y darle formato. Hacemos esto con un selector de elementos: un selector que coincide directamente con el nombre de un elemento HTML. Para seleccionar todos los párrafos del documento, se usa el selector p. De esta forma, para hacer que el texto de todos los párrafos se muestren de color verde, bastará con utilizar el siguiente código:

p {
  color: green;
}

Puedes utilizar múltiples selectores a la vez, separándolos con una coma. Por ejemplo, si queremos que el texto de todos los párrafos y de todos los elementos de cualquier lista sea verde, el código a utilizar sería el siguiente:

p, li {
    color: green;
}

Ejercicio propuesto: Cambiar el color de varios elementos

Usando los archivos HTML y CSS del ejercicio anterior, cambia el color de los párrafos y elementos de la lista. Puedes probar varios colores y elegir el que más te guste (red, green, blue, gray, purple, olive, navy, etc). Como de costumbre, verifica los resultados con tu navegador y no olvides validar el código.

Puede encontrar las palabras clave que identifican diversos colores aquí: https://developer.mozilla.org/en-US/docs/Web/CSS/color_value.

Aplicar formato según el estado

CSS nos ofrece la capacidad de aplicar formato a los elementos en función de su estado. Un ejemplo sencillo es el estilo de los enlaces. Cuando damos formato a un enlace, necesitamos seleccionar el elemento <a> (anchor). Tiene diferentes estados dependiendo de si se ha visitado o no, si se pasa el ratón por encima, o si se presiona con el teclado o se hace clic (se activa). Puedes usar CSS para dar formato a estos diferentes estados. Utilizando el código CSS que se muestra a continuación se deberían visualizar en color rosa los enlaces que no se han visitado y en verde los que sí.

a:link {
  color: pink;
}

a:visited {
  color: green;
}

También puedes cambiar la apariencia del enlace, por ejemplo, eliminando el subrayado, lo que se logra mediante la siguiente regla:

a:hover {
  text-decoration: none;
}

En el ejemplo de arriba hemos eliminado el subrayado del enlace cuando el ratón se pasa por encima, y se puede eliminar de todos los estados de un enlace. Sin embargo, es conveniente recordar que en una página web real deberás asegurarte de que los visitantes sepan reconocer que se trata de un enlace. Que aparezca subrayado puede ser una pista importante para que las personas se den cuenta de que pueden hacer clic en una palabra dentro del párrafo, ya que es a lo que están acostumbrados. Al igual que con todo en CSS, existe la posibilidad de que tus cambios resten accesibilidad al documento.

Ejercicio propuesto: Aplicar estilos a los enlaces

Usando los archivos HTML y CSS del ejercicio anterior, inserta varios párrafos con algunos otros enlaces a tus páginas preferidas y cambia el color de todos los enlaces. También debes usar diferentes colores cuando se ha visitado el enlace y cuando el ratón está sobre el enlace. Puedes probar varios colores y elegir el que más te guste (red, green, blue, gray, purple, olive, navy, etc). Como viene siendo habitual, verifica los resultados con tu navegador y no olvides validar el código.

Puedes encontrar las palabras clave que identifican diversos colores aquí: https://developer.mozilla.org/en-US/docs/Web/CSS/color_value.

Cambiar el comportamiento predeterminado de los elementos

Cuando visualizamos una página web, incluso con un código tan simple como el de nuestro ejemplo, podemos ver que el navegador facilita la legibilidad de este documento HTML al añadir un estilo predeterminado. Los títulos se muestran grandes y en negrita, y la lista tiene viñetas. Esto sucede porque los navegadores tienen hojas de estilo internas que contienen estilos predeterminados, los cuales se aplican a todas las páginas por defecto. Sin ellos, todo el texto se amontonaría y tendríamos que darle formato desde cero. Todos los navegadores modernos suelen mostrar el contenido HTML por defecto de la misma manera.

Sin embargo, a menudo querrás algo diferente a la elección que ha hecho el navegador. Esto se puede solucionar con el simple hecho de escoger el elemento HTML que deseas cambiar y utilizar una regla CSS para cambiar su apariencia.  Un buen ejemplo es <ul>, que muestra una lista desordenada. Por defecto tiene viñetas, pero si decidimos que no las queremos, podemos eliminarlas fácilmente de este modo:

ul {
  list-style-type: none;
}

Puedes consultar en MDN la propiedad list-style-type para ver qué valores admite. Echa un vistazo a la página de list-style-type y encontrarás un ejemplo interactivo en la parte superior donde podrás probar diferentes valores (todos los permitidos se detallan más abajo en esa misma página). También descubrirás en esa página que además de eliminar las viñetas de la lista, también puedes cambiarlas.

Ejercicio propuesto: Cambiar las viñetas de una lista

Utilizando los archivos HTML y CSS del ejercicio anterior, intenta configurar el list-style-type con square. Como de costumbre, verifica los resultados con tu navegador y no olvides validar el código.

Deberías obtener un resultado similar a este:
  • Primer elemento de una lista
  • Segundo elemento de una lista
  • Tercer elemento de una lista

Ejercicio propuesto: Cambiar el estilo de una lista numerada

Usando los archivos HTML y CSS del ejercicio anterior, agregue una lista ordenada (<ol>) y configura el list-style-type con upper-roman. Como de costumbre, verifica los resultados con tu navegador y no olvides validar el código.

Deberías obtener un resultado similar a este:
  • Elemento uno
  • Elemento dos
  • Elemento tres
  1. Elemento uno
  2. Elemento dos
  3. Elemento tres

Utilizando clases

Hasta ahora, hemos utilizado selectores cuyo nombre se basa en el nombre de elemento que reciben en HTML. Esto funciona siempre que se desee que todos los elementos de ese tipo tengan el mismo aspecto en el documento. La mayoría de las veces no es el caso, por lo que deberás encontrar una manera de seleccionar un subconjunto de los elementos sin que cambien los demás. La forma más común de hacer esto es añadir una clase al elemento HTML y establecer el estilo que se aplicará al utilizar dicha clase.

Puedes añadir un atributo de clase a cualquier elemento dentro de tu fichero HTML. Por ejemplo, podríamos utilizar el atributo «class» sobre elementos de tipo lista de la siguiente forma:

<ul class="lista-roja-con-cuadrados">
  <li>Elemento uno</li>
  <li>Elemento dos</li>
  <li>Elemento tres</li>
</ul>
<ul class="lista-azul-con-circulos">
  <li>Elemento uno</li>
  <li>Elemento dos</li>
  <li>Elemento tres</li>
</ul>

Después de escribir ese código HTML, en tu CSS, puedes diseñar las clases lista-roja-con-cuadrados y lista-roja-con-cuadrados creando un par de selectores que comiencen con un punto:

.lista-roja-con-cuadrados {
  list-style-type: square;
  color: red;
}
.lista-azul-con-circulos {
  list-style-type: circle;
  color: blue;
}

Para observar el resultado después de escribir nuevo código HTML y CSS, bastará con guardar los archivos y refrescar el contenido del navegador pulsando Ctrl+F5.

Ejercicio propuesto: Estilos diferentes para cada lista

Usando los archivos HTML y CSS del ejercicio anterior, añade varias listas para obtener algo similar al resultado que se muestra a continuación. Como de costumbre, verifica los resultados con tu navegador y no olvides validar el código.

En lo que respecta a las listas no ordenadas (<ul>) debes crear 4 clases diferentes, cada una de ellas con un valor diferente de la propiedad list-style-type (none, disc, circle, square). Para las listas ordenadas (<ol>) debes crear otras clases, cada una también con valores diferentes para la propiedad list-style-type (upper-roman, lower-greek, lower-alpha, upper-alpha).

Listas no ordenadas

  • Elemento uno
  • Elemento dos
  • Elemento tres
  • Elemento uno
  • Elemento dos
  • Elemento tres
  • Elemento uno
  • Elemento dos
  • Elemento tres
  • Elemento uno
  • Elemento dos
  • Elemento tres

Listas ordenadas

  1. Elemento uno
  2. Elemento dos
  3. Elemento tres
  1. Elemento uno
  2. Elemento dos
  3. Elemento tres
  1. Elemento uno
  2. Elemento dos
  3. Elemento tres
  1. Elemento uno
  2. Elemento dos
  3. Elemento tres

Ejercicio propuesto: Usar CSS con encabezados, párrafos y texto general

Cambia el color de diversos elementos de ejercicios previos de HTML en los que utilizaste encabezados, párrafos y texto formateado en las unidades 1 y 2 (https://fernandoruizrico.com/html-unidad-1/ and https://fernandoruizrico.com/html-unidad-2/). No olvides validar tu código de nuevo.

Recuerda que puedes encontrar las palabras clave que identifican diversos colores aquí: https://developer.mozilla.org/es/docs/Web/CSS/Reference/Values/color_value.

Ejercicio propuesto: Usar CSS con hipervínculos

Cambia el color de diversos elementos de la unidad 3 de HTML (https://fernandoruizrico.com/html-unidad-3/). No olvides validar tu código de nuevo.

Recuerda que puedes encontrar las palabras clave que identifican diversos colores aquí: https://developer.mozilla.org/es/docs/Web/CSS/Reference/Values/color_value.

Ejercicio propuesto: Usar CSS con listas

Cambia el color, las viñetas y la numeración de diversas listas de los ejercicios de listas de la unidad 4 de HTML (https://fernandoruizrico.com/html-unidad-4/). No olvides validar tu código de nuevo.

Recuerda que puedes encontrar las palabras clave que identifican diversos colores aquí: https://developer.mozilla.org/es/docs/Web/CSS/Reference/Values/color_value.

Test

Comprueba tus conocimientos con este test sobre los conceptos básicos de CSS, los colores y selectores tratados en esta unidad.

HTML. Unidad 5. Imágenes.

Presentación

Infografía

Diapositivas y vídeo

A través de esta presentación, estas diapositivas, y este vídeo, te familiarizarás con los contenidos clave de esta unidad.

Introducción

Al principio, las páginas web solo contenían texto y resultaba más bien aburrida. Afortunadamente, no pasó mucho tiempo antes de que se añadiera la capacidad de insertar imágenes (y otros tipos de contenido más interesantes). Existen elementos multimedia que debemos tener en cuenta, pero es lógico comenzar con el humilde elemento <img> utilizado para insertar una imagen simple en una página web. En esta unidad veremos en detalle cómo usar este elemento, incluidos sus conceptos básicos y cómo añadir pies de imagen usando <figure>.

¿Cómo ponemos una imagen en una página web?

Para poner una imagen simple en una página web, utilizamos el elemento <img>. Se trata de un elemento vacío (lo que significa que no contiene texto o etiqueta de cierre) que requiere por lo menos de un atributo para ser utilizado: src (a veces denominado por su nombre completo, source). El atributo src contiene una ruta que apunta a la imagen que quieres poner en la página, que puede ser una URL relativa o absoluta, de la misma forma que el elemento <a> contiene los valores del atributo href.

Por ejemplo, si tu imagen se llama dinosaurio.jpg, y está en el mismo directorio que tu página HTML, incluir la imagen de la siguiente manera:

<img src="dinosaurio.jpg" />

El código anterior debería darnos el resultado siguiente:

Si la imagen está en el subdirectorio imagenes, ubicado en el mismo directorio que la página HTML (lo que Google recomienda con fines de indexación y posicionamiento en buscadores SEO), entonces la imagen se puede incluir así:

<img src="imagenes/dinosaurio.jpg" />

Los motores de búsqueda también leen los nombres de archivo de imagen y esto cuenta para el SEO.  Por lo tanto, elige para tu imagen un nombre descriptivo. Por ejemplo, dinosaurio.jpg es mejor que img835.png.

También puedes incluir la imagen usando la URL absoluta, por ejemplo:

<img src="https://www.ejemplo.com/imagenes/dinosaurio.jpg" />
...
<img src="https://developer.mozilla.org/static/img/favicon144.png" />

Aunque esta última opción es menos habitual, ya que provoca que el navegador tenga que buscar la dirección IP desde el servidor DNS cada vez. Al ser posible, conviene almacenar las imágenes de tu página web en el mismo servidor donde guardes tu código HTML.

Por último, conviene mencionar que la mayoría de imágenes tienen derechos de autor. Por ello, no debes mostrar una imagen en tu página web a menos que:

  1. seas dueño de la imagen,
  2. tengas permiso escrito explícito del dueño de la imagen o 
  3. tengas suficientes pruebas de que la imagen es de dominio público.

El incumplimiento de las normas de los derechos de autor es un acto ilegal y poco ético. Por lo tanto, no debes apuntar nunca tu atributo src a una imagen que esté alojada en un sitio web si no tienes el permiso para hacerlo. Esto se llama hotlinking. Asimismo es ilegal robar el ancho de banda de alguien.  Además, ralentiza tu página y te deja sin control sobre la imagen si la eliminan o reemplazan por otra que incluso podría resultar embarazosa.

Texto alternativo

El próximo atributo que veremos es  alt. Su valor debe ser una descripción textual de la imagen para usarla en situaciones en que la imagen no se pueda mostrar o tarde demasiado en mostrarse por una conexión de Internet muy lenta. Por ejemplo, nuestro código anterior podría modificarse así:

<img src="imagenes/dinosaurio.jpg"
     alt="La cabeza y el torso de un esqueleto de dinosaurio;
           tiene una cabeza grande con dientes largos y afilados">
...
<img src="https://developer.mozilla.org/static/img/favicon144.png"
     alt="MDN logo" />

La forma más fácil de probar el texto alt es escribir mal el nombre de archivo. Si, por ejemplo, escribimos el nombre de archivo de nuestra imagen como dinosaurioooooo.jpg, el navegador no podrá mostrar la imagen, y en su lugar mostrará el texto alternativo.

Además de ser necesario (la validación de tu página web no será correcta si omites algún texto alternativo), el texto alternativo podría resultar necesario por varias razones:

  • El usuario tiene alguna discapacidad visual y utiliza un lector de pantalla para leer el contenido de la web. De hecho, disponer de texto alternativo para describir las imágenes es útil para la mayoría de los usuarios.
  • Como ya hemos dicho anteriormente, es posible que se haya escrito mal el nombre del archivo o su ruta.
  • El navegador no admite el tipo de imagen. Algunas personas aún usan navegadores de solo texto, como Lynx, que muestran el texto del atributo alt.
  • Quieres que los motores de búsqueda puedan utilizar este texto. Por ejemplo, los motores de búsqueda pueden hacer coincidir el texto alternativo con la consulta de búsqueda.
  • Los usuarios han desactivado las imágenes para reducir el volumen de transferencia de datos y de distracciones. Esto puede suceder especialmente en teléfonos móviles y en países en los que el ancho de banda está bastante limitado.

Para saber qué hay que escribir exactamente en el atributo alt, debemos pensar primero por qué la imagen está en ese lugar. En otras palabras, qué se pierde si la imagen no aparece:

  • Decoración. Para las imágenes decorativas deberían utilizarse imágenes de fondo CSS. Pero si es inevitable usar HTML, la mejor forma de hacerlo es con alt="". Si la imagen no es parte del contenido, el lector de pantalla no debería malgastar el tiempo en leerla.
  • Contenido. Si tu imagen proporciona información significativa, se debe proporcionar la misma información en un texto alternativo (alt) breve. O mejor aún, en el texto principal que todos pueden ver. No escribas texto alternativo redundante. ¿Acaso no resultaría molesto para un usuario con visión ordinaria si todos los párrafos se escribieran dos veces en el contenido principal? Si la imagen se describe en el cuerpo principal del texto de modo adecuado, puedes simplemente usar alt="".
  • Enlace. Al poner una imagen dentro de una etiqueta <a> para convertirla en un enlace, aun debes proporcionar texto de enlace accesible. En tal caso podrías escribirlo dentro del mismo elemento <a>, o dentro del atributo alt de la imagen. Lo que mejor funcione en tu caso.
  • Texto. No deberías poner tu texto en imágenes.  Si tu título de encabezado principal necesita, por ejemplo, un sombreado paralelo, usa CSS para ello en vez de poner el texto en una imagen. Pero, si realmente no puedes evitarlo, deberías proporcionar el texto en el atributo alt.

Resumiendo, el objetivo es ofrecer una experiencia de navegación adecuada en términos de usabilidad, incluso cuando las imágenes no puedan verse. Esto asegura que ningún usuario se pierda ninguna parte del contenido.

Puedes consultar la guía de texto alternativo de Mozilla para obtener más información.

Anchura y altura

Puedes usar los atributos  ancho (width) y alto (height) para especificar la anchura y altura de cada imagen. Puedes encontrar el ancho y el alto de cualquier imagen de diversas maneras. Por ejemplo, con el botón derecho del ratón, o en Mac también puedes usar  Cmd + I  para mostrar información del archivo de imagen. Volviendo a nuestro ejemplo, podríamos hacer esto:

<img src="imagenes/dinosaurio.jpg"
     alt="La cabeza y el torso de un esqueleto de dinosaurio;
          tiene una cabeza grande con dientes largos y afilados"
     width="400"
     height="341">

Sin embargo, no deberías alterar el tamaño de tus imágenes utilizando atributos HTML. Las imágenes podrían verse pixeladas o borrosas si estableces un tamaño demasiado grande; o bien demasiado pequeñas, y se desperdiciaría ancho de banda descargando una imagen que no se ajusta a las necesidades del usuario. La imagen también podría quedar distorsionada, si no mantienes la proporción de aspecto correcta. Deberías utilizar un editor de imágenes para dar a tu imagen el tamaño adecuado antes de colocarla en tu página web. Y si tienes que alterar el tamaño de una imagen desde tu código fuente, es mejor usar CSS.

Título de la imagen

Al igual que con los enlaces, también puedes añadir atributos title a las imágenes para proporcionar más información de ayuda si es necesario. En nuestro ejemplo, podríamos hacer esto:

<img src="imagenes/dinosaurio.jpg"
     alt="La cabeza y el torso de un esqueleto de dinosaurio;
          tiene una cabeza grande con dientes largos y afilados"
     width="400"
     height="341"
     title="Exposición de un T-Rex en el museo de la Universidad de Manchester.">

Esto nos da una etiqueta de ayuda (tooltip) como las de los enlaces. Sin embargo, no se recomienda incluir esta propiedad en las imágenes, ya que title presenta algunos problemas de accesibilidad, principalmente porque los lectores de pantalla (screen readers) tienen un comportamiento imprevisible y la mayoría de navegadores no la mostrarán a menos que pases el ratón por encima de la imagen (y por tanto es inútil para quien usa teclado). Si estás interesado en este tema, puedes leer el artículo The Trials and Tribulations of the Title Attribute de Scott O’Hara.

Resumiendo, es más adecuado incluir en el texto principal de la página la información que pondríamos en el title, en lugar de adjuntarla en la imagen.

Ejercicio propuesto: Insertar imágenes

Crea una página web para mostrar varias imágenes. Tienes que usar la etiqueta básica <img> y el atributo «src» para apuntar a la URL de cada imagen individual. Por ejemplo, puedes usar imágenes como estas:

También debes añadir un texto alternativo a cada imagen y verificar que se muestra al escribir mal la URL de cada imagen. Finalmente experimente con diferentes valores de ancho y alto para ver cuál es su efecto.

Imágenes con enlaces

Este ejemplo se basa en los anteriores y muestra cómo convertir la imagen en un enlace. Para hacerlo, debes anidar la etiqueta <img> dentro de <a>. Además, se debe usar el texto alternativo para describir el recurso al que apunta el enlace, como si se estuviera usando un enlace de texto en su lugar:

<a href="https://developer.mozilla.org">
  <img src="https://developer.mozilla.org/static/img/favicon144.png"
       alt="Visita la web de MDN" />
</a>

Ejercicio propuesto: Las diez páginas más importantes

Crea una página web que muestre una lista ordenada (<ol>) de las diez páginas web que más te gusten. Debes utilizar imágenes para crear enlaces a cada página y establecer el atributo de altura con el mismo valor para todas las imágenes para que todas tengan la misma altura. Por ejemplo:

<ol>
  <li>
    <a href="https://es.wikipedia.org/wiki/Flash_(historieta)">
      <img src="https://upload.wikimedia.org/wikipedia/en/e/ed/The_Flash_Family.jpg" 
           alt="Flash" height="100" />
    </a>
  </li>
  <li>
    <a href="https://es.wikipedia.org/wiki/Daredevil">
      <img src="https://upload.wikimedia.org/wikipedia/en/1/14/Daredevil_65.jpg" 
           alt="Daredevil" height="100" />
    </a>
  </li>
  ...
</ol>

Comentar imágenes con figure y figcaption

Hay varias formas en que puedes añadir un pie a tu imagen. Por ejemplo, nada te impediría hacer esto:

<div class="figure">
  <img src="imagenes/dinosaurio.jpg"
       alt="La cabeza y el torso de un esqueleto de dinosaurio;
            tiene una cabeza grande con dientes largos y afilados"
       width="400"
       height="341">

  <p>Exposición de un T-Rex en el museo de la Universidad de Manchester.</p>
</div>

Este código es completamente correcto, ya que incluye el contenido que se necesita y es muy personalizable con CSS. Pero hay un problema: no hay nada que vincule semánticamente la imagen con su título, lo que puede causar problemas a los lectores de pantalla. Por ejemplo, cuando hay 50 imágenes y leyendas, ¿qué leyenda se corresponde con cada imagen?

Una solución mejor es utilizar los elementos HTML5 <figure> y <figcaption>. Estos se crearon exactamente para este propósito: proporcionar un contenedor semántico para las figuras y vincular claramente la figura con el pie. Nuestro ejemplo anterior podría reescribirse así:

<figure>
  <img src="imagenes/dinosaurio.jpg"
       alt="La cabeza y el torso de un esqueleto de dinosaurio;
            tiene una cabeza grande con dientes largos y afilados" width="400"
       height="341">

  <figcaption>Exposición de un T-Rex en el museo de la Universidad de Manchester.</figcaption>
</figure>

El elemento <figcaption> le dice al navegador, o a alguna tecnología de apoyo, que el texto que contiene describe la imagen que está contenida en el elemento <figure>. Desde el punto de vista de la accesibilidad, los pies de imagen y el texto alternativo alt cumplen funciones diferentes. Los pies de imagen benefician incluso a quien puede ver la imagen, mientras que el texto alt proporciona la misma función en una imagen ausente. Por tanto, los subtítulos y el texto alt no deberían decir lo mismo, porque ambos aparecen si la imagen no se muestra.

También debemos tener en cuenta que el elemento figure no ha de contener una imagen necesariamente. Es una unidad de contenido independiente que:

  • Expresa un significado en una forma compacta y fácil de entender.
  • Se puede poner en varios sitios en el flujo lineal de la página.
  • Proporciona información esencial que da apoyo al texto principal.

Un elemento figure podría contener varias imágenes, un trozo de código, audio, video, ecuaciones, una tabla, o cualquier otra cosa.

Ejercicio propuesto: Figuras con leyenda

Crea una página web para mostrar varias imágenes que te gusten, usando el elemento <figure>, y agrega un título a cada una usando el elemento <figcaption>, como se hace en el siguiente ejemplo:

<figure>
  <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Buzz_salutes_the_U.S._Flag.jpg/500px-Buzz_salutes_the_U.S._Flag.jpg"
       alt="Bandera en la Luna">
  <figcaption>Buzz Aldrin y la primera bandera, 1969</figcaption>
</figure>
<figure>
  <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/NASA_Apollo_17_Lunar_Roving_Vehicle.jpg/500px-NASA_Apollo_17_Lunar_Roving_Vehicle.jpg"
       alt="Rover lunar">
  <figcaption>El Rover lunar del Apolo 15</figcaption>
</figure>
...

Ejercicio propuesto: Las diez películas más interesantes

Crea una nueva página web que muestre una lista ordenada (<ol>) de las diez películas que más te gusten. En este caso, debe utilizar figuras con subtítulos para crear enlaces a cada página. Utiliza el mismo valor para el atributo de altura de todas las imágenes para que todas tengan la misma altura. Por ejemplo:

<ol>
  <li>
    <a href="https://es.wikipedia.org/wiki/Steve_Jobs_(pel%C3%ADcula)">
      <figure>
        <img src="https://upload.wikimedia.org/wikipedia/commons/4/49/SteveJobsMacbookAir.JPG" 
             alt="Steve Jobs y el Macbook Air" height="100" />
        <figcaption>Steve jobs</figcaption>
      </figure>
    </a>
  </li>
  <li>
    <a href="https://es.wikipedia.org/wiki/2001:_A_Space_Odyssey_(pel%C3%ADcula)">
      <figure>
        <img src="https://upload.wikimedia.org/wikipedia/en/0/09/2001child2.JPG" 
             alt="Bebé, espacio, y la Tierra" height="100" />
        <figcaption>2001: Una Odisea Espacial</figcaption>
      </figure>
    </a>
  </li>
  ...
</ol>

Test

Comprueba tus conocimientos con este test sobre imágenes y otros conceptos relacionados con esta unidad.