¿Cómo aplicar una hoja de estilos?

Cuando un navegador lee el contenido de una hoja de estilos utiliza sus especificaciones para darle forma al documento. Hay tres formas básicas de indicarle al navegador la utilización de una hoja de estilos.

Hoja de estilo interna

Cuando un estilo es propio de un único documento podría utilizarse una hoja de estilos interna, mediante la creación de una sección <style> dentro de la cabecera del documento. Este es el método que se ha utilizado para mostrar los ejemplos particularizados que puedes consultar en las ventanas emergentes.

Ten en cuenta que con este tipo de inclusión perdemos de vista una de las finalidades prioritarias de las hojas de estilo, ya que se mezcla en el documento html la especificación de formato con el contenido, aunque puede ser un primer paso para que compruebes la potencia de las hojas de estilo.

Note: Normalmente los navegadores ignoran las etiquetas que desconocen, por lo que un navegador antiguo que no soporte estilos ignorará el contenido de <style>, pero mostrará el contenido de la sección. Para evitarlo podemos utilzar las etiquetas de comentario de HTML tal como se muestra en el siguiente fragmento de código.

<head>
<style type="text/css">
<!--
hr {color: sienna}
p {margin-left: 20px}
body {background-image: url("images/back40.gif")}
-->
</style>
</head>

A continuación tienes un ejemplo de código para la inclusión de un estilo global en una página. Puedes ver el resultado en una ventana independiente. (Ten en cuenta que se podían haber utilizado otras etiquetas y otras propiedades de las mismas)

<html>
<head>
<title> Título de la página </title>

<style type="text/css">
<!--
body {background: black; font-size: 10pt; font-family: Arial,Helvetica,sans-serif; color: yellow; text-align:justify; margin-left: 0.5in; margin-right: 0.5in}
H1 {background: aqua; font-size: 14pt; font-weight: bold; color: orange}
H2 {font-size: 12pt; font-weight: bold; color: white}
-->
</style>

</head>
<body>
Conjunto de etiquetas del cuerpo de la página
</body>
</html>

Como has visto en el ejemplo, la sintaxis se ha modificado al incluir el estilo en la cabecera:

La inclusión del estilo se hará después de la etiqueta de cierre del título </title>

 Crea una página con varios párrafos de texto. Puedes utilizar el mismo texto que usamos en la práctica 30.

 

Hoja de estilos externa

Aunque iniciamos la exposición de posibilidades con las hojas de estilo internas realmente lo correcto habría sido iniciarla con las hojas de estilo externas, ya que ésta es la forma ideal de aplicar un estilo a varias páginas de forma simultánea. De hecho debería ser la forma prioritaria puesto que permite separar claramente el contenido y la estructura, que irán en el documento html, del formato que se aplicará a partir de la hoja de estilos.

Para hacerlo habrá que utilizar en cada documento la etiqueta <link> situada en la cabecera del documento, después de la etiqueta <title>

<head>

<title>página para mostrar la situación de los estilos<title>

<link rel="stylesheet" type="text/css" href="miestilo.css">

</head>

Gracias a este enlace el navegador leerá las especificaciones de la hoja de estilos y dará formato al contenido de acuerdo a ellas.

Así pues hay que seguir dos pasos:

  1. Crear un archivo de texto con cualquier editor de texto plano, salvándola en formato texto con la extensión que se desee, aunque habitualmente suele utilizarse la extensión .css. En dicho archivo especificaremos el contenido de las diferentes normas de estilo utilizando la sintaxis básica selector {propiedad:valor}
  2. Enlazar cada página a la que queramos aplicarle el estilo con el archivo creado para que extraiga de él las características.

Para crear un archivo de definiciones que recogiera las características del ejemplo anterior escribiríamos:

body {background: black; font-size: 10pt; font-family: Arial,Helvetica,sans-serif; color: yellow; text-align:justify; margin-left: 0.5in; margin-right: 0.5in}
H1 {background: aqua; font-size: 14pt; font-weight: bold; color: orange}
H2 {font-size: 12pt; font-weight: bold; color: white}

Observa que el archivo no incluye ninguna etiqueta en el formato habitual. Se trata simplemente de un arcchivo de texto con las propiedades atribuidas a cada elemento.

Una vez definidas las propiedades guardaremos el archivo en formato texto con el nombre que queramos y la extensión css. Por ejemplo, estilodeprueba.css

El paso 2 es incluir en la cabecera de la página, detrás de la etiqueta </title> la etiqueta <link rel="stylesheet" href="estilodeprueba.css" type="text/css">

El siguiente ejemplo presenta la misma apariencia que vimos al aplicar el estilo en la página, pero está creado utilizando este método.

 

Combinar hojas de estilo externas en una nueva

Si ya tenemos definida una hoja de estilos y deseamos reutilizarla añadiendo algunas modificaciones podemos crear una nueva hoja de estilos en la que importemos el contenido de la que ya teníamos y añadamos las nuevas reglas. Puede ser por ejemplo, el caso de un centro en el que se utilizara una hoja de estilos genérica y cada nivel o departamento aprovechara esas especificaciones y añadiera las suyas propias para personalizar una zona de la web.

Para importar una hoja de estilos ya creada lo debemos indicar en la primera línea de la nueva hoja (o en la primera y sucesivas si estamos importando varias hojas) utilizando la sintaxis:

@import url(colegio.css);
/* A continuación añadimos los selectores, clases y pseudoclases que modificamos con sus propiedades correspondientes */
h1 { font-style : italic }
...

Lógicamente, al definir la url en la que está situada la hoja de estilos habrá que utilizar la ruta relativa dentro del sitio web.

Estilos en línea

Llamamos estilo en línea al que se aplica directamente sobre un elemento al crear el código HTML. Evidentemente es el procedimiento menos recomendable, ya que perdemos practicamente todas las ventajas ofrecidas por las hojas de estilo al mezclar el contenido y la presentación. La única ventaja que puede presentar respecto al código HTML es que permite la especificación de un abanico mucho mayor de propiedades.

Para usar un estilo en línea varía ligeramente la sintaxis que hemos utilizado hasta ahora, ya que añadimos style como atributo de la etiqueta que deseamos modificar y las propiedades y valores se encierran entre comillas en lugar de entre llaves.

Ver ejemplo

¿Pueden enlazarse varias hojas de estilos con la misma página?

La respuesta es, sencillamente, sí. Basta con repetir la etiqueta link tal como se ha visto poniendo en cada caso el nombre de la hoja con la que se quiere enlazar. Ahora bien, habrá que tener en cuenta que si hay contradicción entre las definiciones de algún elemento, prevalecerá la hoja a la que se haya nombrado en último lugar al crear los enlaces. Además, sobre las hojas enlazadas tendrán prioridad las hojas de estilo internas y, sobre ellas, los estilo en línea aplicados a algún elemento particular.

Por ejemplo, si tenemos nuestra página enlazada con la hoja de estilos genérica de la web del centro, a continuación la hemos enlazado con una hoja de estilos que se está usando para el departamento, tenemos una hoja de estilos interna definida sobre la página y hay algún elemento al que le hemos aplicado un estilo en línea pasaría algo similar a lo siguiente:

La hoja de estilos del centro tiene definidas las propiedades siguientes para el selector h3:

h3 { color: red; text-align: left; font-size: 10pt }

La hoja del departamento tiene sin embargo definido el selector h3 de la siguiente forma:

h3 { text-align: right}

La hoja de estilos interna especifica:

h3 {color: green; font-size: 20pt}

Y hemos especificado en línea sobre una etiqueta h3

<h3 style="font-size: 10pt}

El resultado final será:

Aplicar estilos a elementos o secciones de un documento

Si en vez de a un elemento quiero aplicarle un estilo a un grupo de elementos puedo englobar dichos elementos entre las etiquetas <div> y </div> y aplicar allí el estilo que teníamos definido como clase, tal como se ve en el siguiente ejemplo. (o bien mediante un estilo en línea)

Este código... ...se ve así

<div class = "azul">
<p> Primer párrafo </p>
<ul>
<li>Elemento de lista</li>
<li>Otro elemento</li>
</ul>
<p>Otro párrafo</p>
</div>

Primer párrafo
  • Elemento de lista
  • Otro elemento
Otro párrafo

Puedo intercalar, en una zona delimitada por la etiqueta <div> algún estilo específico aplicado a un elemento en concreto, como se muestra a continuación. En este caso se ha utilizado un estilo en línea para modificar el selector <p>

Este código... ...se ve así

<div class = "azul">
<p> Primer párrafo de la zona azul</p>
<p style = "color: red"> Este párrafo va en rojo en medio de una zona azul</p>
<p>Otro párrafo de la zona azul</p>
</div>

Primer párrafo de la zona azul

Este párrafo va en rojo en medio de una zona azul

Otro párrafo de la zona azul

Si lo que pretendo es aplicar el estilo a una zona menor que la correspondiente a un elemento en bloque, por ejemplo, una palabra dentro de un párrafo utilizaré la etiqueta <span> y su cierre </span>

Este código... ...se ve así

<p> En este párrafo señalo <span style="font-size:16px; font-weight: bold; color:orange"> esta</span> palabra en tamaño de 16 píxeles, en negrita y de color naranja</p>

En este párrafo señalo esta palabra en tamaño de 16 píxeles, en negrita y de color naranja

Recuerda que las hojas enlazadas figuran en el último lugar de prioridad y que, sobre ellas se superpondrán la definición de estilo que hagamos sobre la propia página y, en el primer lugar de prioridad, las modificaciones que realicemos para una etiqueta en particular.

Además, a este orden de preferencia hay que añadirle que, si el usuario tiene especificado un estilo en su navegador este tendrá preferencia sobre los estilos creados por el autor cuando haya contradicción. Por otra parte, el programa navegador (al que se denomina también Agente de usuario) puede imponer su estilo si así lo tiene definido en las configuraciones.

Diferentes medios... diferentes estilos

Probablemente recuerdes que, cuando se habló de los colores del texto se recomendaba tener en cuenta el destino final que pretendíamos adjudicarle a una página web. Escribir en blanco sobre fondo azul marino es una combinación elegante y muy relajada para la vista cuando visualizamos la página en pantalla, pero si queremos que el contenido se imprima... el color blanco del texto va a dejar poca huella sobre el folio en blanco.

Las hojas de estilo vienen en nuestra ayuda para casos similares a éste, permitiéndonos especificar que un estilo tenga una apariencia cuando el documento se muestre en una pantalla y otra diferente cuando se imprima. Para hacerlo tendremos que recurrir a la directiva @media. Tanto si se trata de una hoja de estilos externa, como interna o con estilos en línea, cuando incluimos una regla @media las propiedades que se definan a continuación se aplicarán cuando el documento se muestre en el tipo de medio especificado. La aplicación más directa la encontraremos al definir estilos para impresión (@media print) y para pantalla (@media screen)

<style type="text/css">
<!--
/* Definimos las reglas de estilo de la forma habitual.*/


body { background-color: #000099; }
p { font-family: Arial, Helvetica, sans-serif; font-size: 14pt; color: #FFFFFF;}

/*Y ahora indicamos las características para imprimir*/
@media print {
body { background-color: #FFFFFF; }
p { font-family: "Times New Roman", Times, serif; font-size: 10pt; color: #000000; }
}

/*Podríamos seguir especificando otros selectores o clases de aplicación general*/
-->
</style>

Ver ejemplo

Cuando creamos estilos para un tipo de medio la sintaxis se modifica como si creáramos una especie de "superselector": todos los selectores aplicables a ese medio se encierran entre dos llaves precedidas por la regla @media y el tipo de medio, tal como se ha marcado en la anterior muestra de código.

No hemos especificado @media screen porque estamos trabajando normalmente para pantalla y al no haber especificado nada los estilos se aplicarán en el dispositivo que muestre la página. (realmente lo único que necesitábamos era diferenciar la presentación del color de fondo y el tipo de letra cuando se imprimiera)

Pero no solo podemos especificar la pantalla y la impresión como medios para los que especificar estilos. El listado completo de medios actualmente establecidos por el W3C es el siguiente:

all
Cualquier tipo de dispositivo .
aural
Referido a navegadores para personas con deficiencias visuales que utilizan sintetizadores de voz para realizar una lectura de los contenidos.
braille
Dispositivos tactiles basados en lenguaje braille.
embossed
Impresoras en braille.
handheld
Dispositivos portátiles, caracterizados por una pantalla pequeña, generalmente monocromos y con limitado ancho de banda.
print
Impresoras o documentos mostrados en pantalla en forma de visualización previa a la impresión.
projection
Presentaciones proyectadas o impresión de transparencias.
screen
Referido, fundamentalmente a pantallas de ordenador.
tty
Utilizado para referirse a medios que presentan la información con un tamaño fijo de letra, como por ejemplo los teletipos.
tv
Referido a dispositivos de tipo televisión, caracterizados por una menor resolución que las pantallas de ordenador, pantallas con capacidad limitada de desplazamiento y presencia de sonido.

Cada uno de estos medios puede disponer de algunas propiedades especificas, que se pueden consultar en la documentación del W3C. Se puede consultar, por ejemplo, la traducción de las especificaciones del W3C para hojas de estilo auditivas que es una de las mas desarrolladas.