Eenvoudige HTML en CSS

CSS (Cascading Style Sheets)

Oorspronkelijk diende HTML om structuur aan een tekst te geven, maar niet om het uiterlijk ervan vast te leggen. Daarom waren er "tags" (de "commando's" die tussen < en > staan) voor een titel, koppen op diverse niveaus (<H1>, <H2>, <H3>, enz.), alinea's <p>, opsommingen en hyperlinks.

Hoe de tekst er uit moest komen te zien bepaalde de browser, op basis van de structuur en de mogelijkheden van de monitor, maar dat stond niet gespecificeerd.

Later wilden mensen dat toch kunnen, en er kwamen "tags" bij om lettertypen, corpsgrootte, tekstkleur, achtergrondkleur enz. enz. aan te geven. Dat lijkt leuk, maar het heeft vele nadelen:

Met CSS (Cascading Style Sheets) zijn al deze problemen elegant op te lossen.

Met CSS koppel je uiterlijke eigenschappen aan een element in HTML. Die eigenschappen kunnen met weinig of veel details beschreven zijn, maar het gebeurt maar één keer, niet steeds opnieuw. Het beste is de standaard HTML-elementen te gebruiken (bijvoorbeeld body, h1, h2, p, strong), dan hoeft er in de inhoud (HTML) niets speciaals te staan over het uiterlijk (CSS).
Voorbeeld: Stel ik wil voor al mijn pagina's een fraai font. Ik kies er een uit, en zet in het CSS-bestand waarnaar ik verwijs:

      body
      {
         font-family: Trebuchet MS, Arial, sans-serif;
         margin: +32pt;
      }
   

Ik vind namelijk Trebuchet wel een aardig font, smaken verschillen. Maar het is een Windows-font, andere systemen kennen het waarschijnlijk niet. Het kan ook wel zijn dat alleen de wat nieuwere Windows-versies het hebben, en oudere niet. Dat weet ik niet precies, en dat wil ik ook niet weten, en niet hoeven weten. Ik kan dat doen door ook alternatieve fonts op te geven. Als de browser het eerste font niet kent mag het het tweede gebruiken, en anders het derde. Arial is ook schreefloos, en bestaat op alle Windows-versies vanaf 3.1. Sans-serif (letterlijk: schreefloos) is op alle systemen in een of andere vorm wel geïmplementeerd. Mijn pagina's zullen er nu dus niet op alle systemen precies hetzelfde uitzien, maar wel ongeveer zoals ik het bedoeld heb.
Ik heb ook nog een linker- en rechtermarge opgegeven, uitgedrukt in points (pt).

Doordat ik het font opgeef voor de body geldt het meteen ook voor p, h1, h2, li, strong enz. Ik kan ook wel voor elk van die elementen een apart lettertype opgeven, maar dat hoeft niet. Als ik hetzelfde wil, hoef ik het niet te herhalen. Dat spaart ruimte, complexiteit, en interpreteertijd voor de browser.
Microsoft® Word® doet het vaak heel anders, veel onhandiger.

Sommige elementen hebben nog nadere onderverdelingen, bijvoorbeeld het Anchor van de HREF, dat kent link (een nog niet bezochte hypertekst-verwijzing), visited (een al wel bezochte verwijzing), active (de link waar de cursor op staat, meestal te verplaatsen met toetsen Tab en Shift-Tab), hover (de link maar de muisaanwijzer boven hangt, nog zonder te klikken).
Om hiervoor allemaal verschillende kleuren te hebben, kan bijvoorbeeld dit in het stijlblad (style-sheet) staan:

   a:link    {color: #66ffbb; }
   a:visited {color: #ff8800; }
   a:active  {color: #5577ff; }
   a:hover   {color: #5577ff; }
   

De kleuren kunnen ook overigens ook gewoon met namen worden aangeduid.

Eerder zagen we hoe je een stukje tekst vet of cursief kunt maken of kan onderstrepen om er de nadruk op te leggen. Nadeel is dat de vorm van de benadrukking al vastligt, en bij wijziging van die benadrukkingsstijl moet je alles weer door. Het is daarom beter alleen vast te leggen dat iets benadrukt moet worden, maar niet hoe, want dat staat dan apart in CSS, geldig voor alle pagina's die van die definitie gebruik maken.
HTML heeft daarvoor de aanwijzing <strong>, door tekst daartussen te plaatsen krijgt het een bijzonder uiterlijk. Ik deed dat hierboven met de woorden <strong>dat</strong> en <strong>hoe</strong>. Het is niet nodig hiervoor iets in CSS te zetten, omdat de browser zelf al een manier heeft om <strong> te laten zien, bijvoorbeeld vette tekst. Maar wil je iets anders, bijvoorbeeld cursief en een kleur, neem je in het CSS-stijlblad op:

   strong
   {
      font-style: italic;
      color     : red;
   }
   

Het is ook mogelijk eigen subklassen te definiëren. Ik deed dat hierboven om de opgesomde nadelen meer op te laten vallen. Ik maakte een subklasse disadv (van disadvantage, nadeel) van het standaard li (list-item). In de HTML schrijf ik dan in plaats van <li> : <li class="disadv">, waardoor die punten van de opsomming tot die klasse gaan behoren, en het bijbehorende uiterlijk aannemen. Dat uiterlijk definieer ik in CSS, als volgt:

   li.disadv
   {
      color     : green;
      font-style: italic;
   }
   

De subklasse disadv hoort dan speciaal bij <li>. Maar ik kan ook een algemene subklasse vastleggen:

   .disadv
   {
      color     : green;
      font-style: italic;
   }
   

Dan kan ik ook midden in een tekst een nadeel extra laten uitkomen, dus het in de HTML zo aan te geven:
<span class="disadv">nadeel</span>

Met CSS is nog veel meer mogelijk. Zie voor uitgebreide uitleg w3.org en de specificaties. Hans de Jong geeft deze uitleg in het Nederlands.
Verder is het boek "Webdesign in de praktijk" van Peter Kentie (2003 of 2005) aan te raden, en niet alleen voor wie meer over CSS wil weten. Zie ook deze toelichtende notitie.
Zelf ben ik pas CSS gaan gebruiken na de uitleg (geschreven door Edwin Martin) in zijn boek doorgenomen te hebben, nadat eerdere pogingen met alleen de specs strandden doordat ik er niets van begreep.

Voor deze uitleg heb gebruik ik het stijlblad "../html_en/style.css". Merk op dat er maar één stijlblad is voor alle talen, reden dat ik hem in een andere directory heb geplaatst dan de html-bestanden voor het Nederlands. Ik wil namelijk hetzelfde uiterlijk voor de Engelse en de Nederlandse versie, zodat er een gemeenschappelijk stijlblad kan zijn.

Het is mogelijk een basisstijlblad op te zetten, die voor veel pagina's geldt. Aanvullende, gespecialiseerde eigenschappen voor kleinere groepen pagina's kunnen dan in andere stijlbladen staan. Die kunnen het algemene weer oproepen, als volgt:
@import url("basis.css");


Vorige Begin Volgende

Copyright © 2002 R. Harmsen