Layout aanpassen door van stylesheet te wisselen

Deze pagina ziet er uit als alle andere op deze website. Maar als je op de knop hiernaast klikt, verandert de opmaak. Als je er weer op klikt, komt de oude opmaak weer terug.

Dit effect wordt bereikt met twee verschillende stylesheets. Door op de knop te klikken wordt een JavaScript-functie uitgevoerd. Die kijkt welke van de twee stylesheets actief is, schakelt dat uit en activeert het andere sheet.

Op deze bladzijde wordt uitgelegd hoe je dat kunt aanpakken. De JavaScript- en CSS-code van deze pagina kun je downloaden om zelf mee te experimenteren.

Opmerking: Als je behalve de twee styleheets demostylea.css en demostyleb.css nog meer stylesheets hebt die altijd actief zijn, link je die ook in de <HEAD>, echter zonder title- attribuut. De functions activateStyle() en setStyle() laten die stylesheets ongemoeid.

De werking van het JavaScript is -zonder in detail te treden- als volgt:

Op deze bladzijde wordt een script gebruikt waarmee naar het title-attribuut van de stylesheets wordt gezocht. Het kan echter ook anders, bijvoorbeeld door te zoeken naar een bepaalde bestandsnaam.

Deze techniek is zeer geschikt voor het maken van printervriendelijke pagina's.

Het is mogelijk de laatste keuze van de bezoeker met behulp van een cookie te bewaren op zijn eigen PC. Het werken met cookies wordt beschreven in het item Cookies: Gegevens van je website onthouden.

Om goed kennis te nemen van de vele mogelijkheden van deze techniek, is een bezoek aan CSS Zen Garden een absolute must. Steeds dezelfde site, opgemaakt op tientallen verschillende manieren, wat wordt bereikt door alleen van stylesheet te wisselen.

Gebruik:

De code ziet er als volgt uit:
 
(Zet dit in de <HEAD>).

<link rel="stylesheet" href="demostylea.css" title="Normaal">
<link rel="stylesheet" href="demostyleb.css" title="Bijzonder">
 
<script>
  function activateStyle(thename) {
  var linktag;
  for (var i=0; (linktag =
            document.getElementsByTagName("link")[i]); i++) {
    if (linktag.getAttribute("rel").indexOf("style") != -1 &&
            linktag.getAttribute("title")) {
      linktag.disabled = true;
      if (linktag.getAttribute("title") == thename) linktag.disabled = false;
    }
  }
}
 
function setStyle() {
  var linktag, helper;
  for (var i=0; (linktag =
            document.getElementsByTagName("link")[i]); i++) {
    if (linktag.getAttribute("rel").indexOf("style") != -1 &&
            linktag.getAttribute("title")) {
     if (!linktag.disabled){
        helper = linktag.getAttribute("title");
        if (helper == "Normaal") activateStyle("Bijzonder")
        else activateStyle("Normaal");
        break;
      }
    }
  }
}
</script>

(Zet dit in de <BODY>, op de plaats waar je het nodig hebt).

<button type="button" onclick="setStyle()"
  value="Andere opmaak">Andere opmaak</button>
(Neem onderstaand attribuut op in de <BODY>-tag).
onload="activateStyle('Normaal')"
In de code hierboven zijn sommige regels voor de leesbaarheid over twee regels verdeeld.
In je webpagina moet dat op één regel staan!

Downloaden:
 
Druk op de knop: Download deze code  File: voorb303.zip, 1816 bytes.

Opmerking:
 
Het lettertype dat het stylesheet demostyleb.css toepast, wordt wordt ingesteld met behulp van @font-face. Die techniek wordt beschreven in het item Niet-standaard fonts gebruiken.
 
Het is ook mogelijk om alleen een paragraaf of een enkele kop te veranderen. De aanpak wordt beschreven in het item Lettergrootte en -opmaak wijzigen.

 
terug

html-303; Laatste wijziging: 26 april 2020