Menú Prnicipal
Sindicate this blog
RSS 1.0
Tagboard
Radio On Line
Radio Wazee
Implícate
Manifiesto por la liberación de la Cultura No soy Pirata
Contenidos Bajo licencia CC
Creative Commons License
 
Web sponsorizada por Im3diA comunicación
Artículos y Tutoriales
  
Alternar Hojas de Estilos CSS
11/05/2004 | Fco. Moreno
  
Buenos dias gentecilla.

Me quiero sumar a la tarea de nuestros gurús del foro en la exposición de temas educativos, para el enriquecimiento en cultura weberil de nuestra comunidad. Así que voy a exponer una curiosidad que asaltó mi espíritu el otro dia que perdía el tiempo (mientras me fumaba el cigarro de las 11) visitando la web del Forum Barcelona 2004.

Resulta que me encontré en la parte superior de la web tres pequeños iconos en forma de 'A' de diferentes tamaños. Cual fue mi sorpresa que haciendo un "clis" encima de cada uno de ellos, se aplicaban diferentes hojas de estilo en función del tamaño de letra. Claro que para eso ya está la opción del browser de cambiar el tamaño del texto (sin olvidar que cuando hay estilos css esto no funciona), pero a la vez esto puede abrir muchas puertas más, debido a la versatilidad de las hojas de estilo. "¿Cómo @#1 lo hacen?" me pregunté angustiado...

Así que, raudo y veloz, destripé el código fuente, mientras que por otro lado abrí Google e hice una pequeña investigación, y esto fue lo que salió.

Imaginemos tres hojas de estilos, en diferentes ficheros, veanse hoja01.css, hoja02.css y hoja03.css

En cada una de ellas definimos las mismas clases pero con distintos atributos, por ejemplo, imaginemos una clase ".texto", que podemos aplicar al grueso de nuestra página web, es decir, en la hoja01.css

.texto {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 8pt;
font-weight: normal;
color: #000000;
text-decoration: none;
}

En la hoja de estilos hoja02.css:

.texto {
font-family: Georgia, "Times New Roman", Times, serif;
font-size: 10pt;
color: #0000FF;
text-decoration: none;
}

Y en la hoja de estilos hoja03.css

.texto {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14pt;
color: #FF0000;
text-decoration: none;
}

Nuestra página debe tener linkadas las tres hojas de estilo entre las etiquetas <head></head> pero con una sutil diferencia:

<link href="hoja01.css" rel="stylesheet" type="text/css" title="hoja1">
<link href="hoja02.css" rel="alternate stylesheet" type="text/css" title="hoja2">
<link href="hoja03.css" rel="alternate stylesheet" type="text/css" title="hoja3">

Esta diferencia estriba en el atributo rel, que establece la hoja de estilos activa, y las hojas de estilo alternativas. Para hacer una hoja de estilos esté activa, el atributo rel se fija a "stylesheet" y a la hoja de estilos se le asigna un nombre con el atributo title, mientras que a las hojas de estilo alternativas, en el atributo rel, se le fija "alternate stylesheet".

Vale, hasta aquí todo sencillito. Ahora necesitaremos de un script que establezca como activas las diferentes hojas de estilo. Para no alargar mucho el tema, pongo la función que nos va a realizar esta cuestión:

function setActiveStyleSheet(title) {
   var i, a, main;
   for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
      if(a.getAttribute("rel").indexOf("style") != -1 &&
      a.getAttribute("title")) {
         a.disabled = true;
         if(a.getAttribute("title") == title) a.disabled = false;
         }
     }
}

De esta manera, desde tres enlaces que pueden ser texto o imágenes, incluidas en el cuerpo principal de nuestra web, podemos referenciar a las tres diferentes hojas de estilo llamándolas por su nombre (title); de esta forma:

<a href="#" onclick="setActiveStyleSheet('hoja1'); return false;">hoja01</a>
<a href="#" onclick="setActiveStyleSheet('hoja2'); return false;">hoja02</a>
<a href="#" onclick="setActiveStyleSheet('hoja3'); return false;">hoja03</a>

Y conseguido, premio para el menda!!!! mi angustia se disipa, soy feliz, me enciendo otro cigarro para celebrarlo...

En esta página http://www.alistapart.com/articles/alternate/ podeis leer un artículo sobre esto, y muchas más cosas, como agregar cookies, y descargar un fichero .js con todas estas funciones listas para usar.

Y eso es todo =)

Un saludo

 
fmkr_2.0
Principal | Actualidad RSS | Quien soy | Portfolio | Artículos | Galería de Fotos
Libro de Visitas | Foros | Aviso Legal

FMKR 2.0 Blog Personal de Fco. Moreno - 2008 | Basado en PHPNews CMS
www.fcomoreno.net | www.fmkr.net