Style sheets |
|
Handleiding HTML |
Inhoud Index |
|
In dit onderdeel komen aan de orde Introductie, Style sheets verbinden met HTML, Elementen, Inline stijlen, Stijlblok, Extern stijlblad, CLASS en ID, DIV en SPAN, Cascading en Alternatieve stijlbladen. |
IntroductieHTML is in 1990 ontwikkeld is om hypertext documenten te maken, welke op verschillende platforms toegankelijk zijn. Het doel was het op een goede manier ontsluiten van informatie. Bij de weergave van de documenten ging het niet om het bieden van een mooie, door de auteur geheel vastgelegde lay-out. Wel zouden de verschillende elementen waaruit HTML is opgebouwd, structuur aan een document moeten geven. Bijvoorbeeld door vast te leggen dat het bij blokken tekst gaat om koppen van verschillende zwaarte, om paragrafen, geciteerde tekst en adresgegevens. Of door (met de elementen voor logische tekstopmaak) te bepalen dat tekst met nadruk wordt weergeven (cursief of vet), of als computercode. In de wetenschappelijke wereld, waarin HTML in eerste instantie vooral werd gebruikt, voldeed de genoemde wijze van presenteren uitstekend. Met de toegenomen verbreding in het gebruik van Internet ontstond bij webauteurs echter de behoefte aan meer mogelijkheden bij de opmaak van documenten. Op deze behoefte is door de ontwikkelaars van browsers (vooral Netscape en Microsoft) ingespeeld door het introduceren van nieuwe elementen en attributen. Bijvoorbeeld de later in HTML opgenomen elementen CENTER en FONT en attributen als SIZE, COLOR, BGCOLOR, FACE en ALIGN, maar ook de browser-specifieke elementen als BLINK, MULTICOL, SPACER en MARQUEE.
De verstrengeling van structuur en presentatie kent niet alleen voordelen. Zeker de browser-specifieke elementen en attributen, maar ook het gebruik van de andere mogelijkheden voor de presentatie hebben vaak tot de gevolg dat een document niet meer in elke browser en op elk platform goed te bekijken is. Daarnaast heeft het (oneigenlijke) gebruik van afbeeldingen geleid tot een aanzienlijke toename in het dataverkeer. Als oplossing voor deze problemen zijn style sheets geïntroduceerd. De achterliggende gedachte is de scheiding tussen structuur en presentatie: HTML moet zoals oorspronkelijk bedoeld weer zorgen voor de structuur van het document, de presentatie wordt bepaald met behulp van style sheets. Daarbij is het idee dat style sheets niet alleen gebruikt worden als vervanging van huidige opmaakmogelijkheden, maar veel meer gaan bieden. Dat moet dan bovendien op een flexibele en makkelijk beheersbare manier. |
Style sheets verbinden met HTMLEen style sheet is een verzameling stijlregels, die bepalen hoe elementen in een document door de browser (of andere apparaten, zoals de printer) weergegeven moeten worden. De stijlregels kunnen bijvoorbeeld betrekking hebben op het lettertype, de lettergrootte, de kleur van de tekst, de achtergrondkleur en de uitlijning, maar ook op het inspringen en de plaats in het browservenster. Style sheets kunnen op verschillende manieren aan de elementen in een HTML-document gekoppeld worden:
In een stijlblok of stijlblad kunnen naast stijlregels voor bepaalde elementen ook stijlregels opgenomen worden, welke alleen in specifieke situaties toegepast moeten worden. Het koppelen van zo'n stijlregel aan een element vindt plaats via de attributen CLASS en ID van dat element. Niet altijd hebben stijlregels betrekking op een element. Soms heeft een stijl betrekking op een groter deel van een document, soms juist op een kleiner deel. In dat geval kan gebruik gemaakt worden van respectievelijk de elementen DIV en SPAN. De stijlregels worden gedefinieerd met behulp van een speciale taal. De enige style sheet taal, welke in meer of mindere mate door de laatste versies van de meest gebruikte browsers ondersteund wordt, is Cascading Style Sheets (CSS). Het is echter goed mogelijk dat in de toekomst, bijvoorbeeld voor specifieke toepassingen, ook andere talen ontwikkeld worden. |
ElementenVoor het verbinden van style sheets met HTML kunnen onder meer de volgende elementen gebruikt worden: |
DIV LINK |
META SPAN |
STYLE |
|
Inline stijlenWanneer een stijl slechts een enkele keer in een document wordt toegepast, kun je gebruik maken van een inline stijl. Je doet dat door het STYLE attribuut toe te voegen aan het element, waarvan je de opmaak van de ingesloten inhoud wilt bepalen. Als waarde van het STYLE attribuut neem je de stijldeclaratie op, waarin de gewenste stijl is vastgelegd:
In het volgende voorbeeld wordt met een inline stijl vastgelegd, dat de tekst ingesloten door het betreffende H1 element in rood moet worden weergegeven.
Wanneer in een document gebruik gemaakt wordt van inline stijlen, dan moet aangegeven worden welke style sheet taal gebruikt wordt. Dat doe je door het META element in de head van het document te plaatsen met de attributen HTTP-EQUIV en CONTENT. Voor Cascading Style Sheets neem de volgende code op:
|
StijlblokStijlen welke slechts op één document betrekking hebben, kunnen worden opgenomen in een stijlblok, dat geplaatst wordt in de head van dat document. Hiervoor wordt gebruik gemaakt van het STYLE element. Aan het STYLE element wordt minimaal het TYPE attribuut toegevoegd, dat het Internet Media (MIME) type definieert van het bestand waarnaar verwezen wordt. Voor Cascading Style Sheets is dat "text/css". Een stijlblok heeft de volgende opbouw:
De stijlregels in het stijlblok zijn bij Cascading Style Sheets opgebouwd volgens het selector-mechanisme, dat beschreven wordt in het onderdeel Structuur CSS. De selector bepaalt op welk deel van een document de stijl betrekking heeft. Dat kan een element zijn (we spreken dan over een element selector), maar bijvoorbeeld ook een specifiek voorkomen van een element. In het laatste geval vindt de koppeling van de stijl aan een element plaats via de attributen CLASS of ID en een class-naam of een id-waarde (we spreken dan over een attribuut selector). Een browser die het STYLE element niet kent, zou de inhoud moeten negeren. Zeker bij oudere browsers is dat niet het geval en bestaat de kans dat de stijlregels als normale tekst worden weergegeven. Om dat te voorkomen, kunnen bij Cascading Style Sheets de stijlregels binnen de code voor commentaar geplaatst worden. Een stijlblok heeft bijvoorbeeld de volgende opbouw:
Aan het STYLE element kan het MEDIA attribuut worden toegevoegd, om aan te geven dat de stijlregels betrekking hebben op de weergave van het document door een bepaald apparaat. Als waarden (media descriptors) kent het MEDIA attribuut onder meer "screen" (voor de weergave zonder pagina-indeling op een computerscherm), "print" (voor de weergave in in pagina-opmaak bij het afdrukken of als print-preview) en "aural" (voor de weergave door een spraak-synthesizer). Bij de waarde "all" worden de stijlregels toegepast bij de weergave door alle apparaten. De standaardwaarde, waarvan uitgegaan wordt als het MEDIA attribuut niet is gebruikt, is "screen". In het volgende voorbeeld zijn in de head van een document twee stijlblokken gedefinieerd. Het eerste stijlblok moet alleen toegepast worden bij het afdrukken van het document, voor het tweede is het MEDIA attribuut niet opgenomen en dat moet dus gebruikt worden bij de weergave op het scherm.
Bekijk in een nieuw venster of de browser het MEDIA attribuut ondersteunt. Wanneer een stijlblok op meerdere apparaten betrekking heeft, dan worden meerdere waarden voor het MEDIA attribuut opgenomen, gescheiden door een komma.
Door Netscape Navigator 4 wordt uitsluitend de waarde "screen" ondersteund. Wanneer de waarde "screen" gebruikt wordt in combinatie met een andere waarde, worden de in het stijlblok opgenomen stijlen door Netscape Navigator 4 genegeerd. |
In Cascading Style Sheets kunnen met behulp van de @import regel één of meer externe stijlbladen in een stijlblok geïmporteerd worden.
De bestemming wordt op dezelfde wijze vastgelegd als bij het HREF attribuut van het LINK element.
Gewone stijlregels hebben prioriteit boven de stijlregels uit een geïmporteerde stijlblad. Indien meerdere stijlbladen geïmporteerd worden en in meerdere van deze stijlbladen de stijl voor een element gedefinieerd wordt, dan wordt de stijlregel uit het laatste geïmporteerde stijlblad aangehouden. |
Extern stijlbladEen extern stijlblad is een document, waarin stijlen zijn beschreven waarvan in één of meer andere documenten gebruik gemaakt kan worden. De verwijzing vanuit een document naar een stijlblad gebeurt met behulp van het LINK element, dat wordt opgenomen in de head van het document. Aan het LINK element worden in ieder geval de attributen HREF, REL en TYPE toegevoegd. Het HREF attribuut specificeert welk stijlblad geopend moet worden, met het REL attribuut wordt aangegeven, dat het bij het gerelateerde bestand gaat om een stylesheet. Het TYPE attribuut definieert het Internet Media (MIME) type van het bestand waarnaar verwezen wordt. Voor Cascading Style Sheets is dat "text/css". Een extern stijlblad wordt bijvoorbeeld als volgt opgeroepen:
Een stijlblad bevat geen HTML-code, maar uitsluitend stijlregels. Bij Cascading Style Sheets zijn deze stijlregels opgebouwd volgens het selector-mechanisme, dat beschreven wordt in het onderdeel Structuur CSS. De selector bepaalt op welk deel van een document de stijl betrekking heeft. Dat kan een element zijn (we spreken dan over een element selector), maar bijvoorbeeld ook een specifiek voorkomen van een element. In het laatste geval vindt de koppeling van de stijl aan een element plaats via de attributen CLASS of ID en een class-naam of een id-waarde (we spreken dan over een attribuut selector). Een stijlblad kan er bijvoorbeeld als volgt uitzien:
Het MEDIA attribuut kan aan het LINK element toegevoegd worden, om aan te geven dat de stijlregels betrekking hebben op de weergave van het document door een bepaald apparaat. Als waarden (media descriptors) kent het MEDIA attribuut onder meer "screen" (voor de weergave zonder pagina-indeling op een computerscherm), "print" (voor de weergave in pagina-opmaak bij het afdrukken of als print-preview) en "aural" (voor de weergave door een spraak-synthesizer). Bij de waarde "all" worden de stijlregels toegepast bij de weergave door alle apparaten. De standaardwaarde, waarvan uitgegaan wordt als het MEDIA attribuut niet is gebruikt, is "screen". In het volgende voorbeeld worden de stijlregels in het stijlblad alleen toegepast bij het afdrukken:
Wanneer een stijlblad op meerdere apparaten betrekking heeft, dan worden meerdere waarden voor het MEDIA attribuut opgenomen, gescheiden door een komma.
Door Netscape Navigator 4 wordt uitsluitend de waarde "screen" ondersteund. Wanneer de waarde "screen" gebruikt wordt in combinatie met een andere waarde, worden de in het stijlblad opgenomen stijlen door Netscape Navigator 4 genegeerd. |
CLASS en IDMet behulp van de attributen CLASS en ID kunnen aan bijna elk element in een document stijlen worden toegevoegd, welke met behulp van een attribuut selector zijn opgenomen in een extern stijlblad of een ingesloten stijlblok. Het CLASS attribuut wordt toegepast, wanneer een element niet elke keer in dezelfde stijl moet worden uitgevoerd (en dus geen stijl voor het element gedefinieerd kan worden), of als dezelfde stijl voor verschillende elementen gebruikt moet kunnen worden. Het ID attribuut kan alleen toegepast worden indien de waarde ervan slechts één keer in een document wordt gebruikt. Het verbinden van de stijl met een element gebeurt bij gebruik van van het CLASS attribuut via een class-naam en in het geval van het ID attribuut via een id-waarde:
De stijlregels in een stijlblad of een stijlblok voor de class-naam en de id-waarde hebben de volgende opbouw:
In het volgende voorbeeld zijn in een stijlblok de class-naam "rood" en de id-waarde xYz987 opgenomen:
Van elk element, waaraan het CLASS attribuut met de class-naam "rood" is toegevoegd, is de kleur van de tekst rood:
Van het enkele voorkomen van het element, waaraan het ID attribuut met de id-waarde "abC01" is toegevoegd, is de kleur van de tekst blauw:
Zie voor meer informatie over de opbouw van de attribuut selectors het onderdeel Structuur CSS. |
DIV en SPANDe elementen DIV en SPAN kunnen gebruikt worden, wanneer een stijl voor een deel van een document moet worden vastgelegd en dat deel niet tevens door een ander element ingesloten wordt.
In het volgende voorbeeld wordt voor het DIV element een inline stijl gedefinieerd met behulp van het STYLE attribuut.
In de browser zie je: Dit is H2Deze tekst is ingesloten door het P element. Voor een deel van de door het P element ingesloten tekst wordt nu een inline stijl gedefinieerd door het STYLE attribuut toe te voegen aan het SPAN element.
In de browser zie je: Dit is H2Deze tekst is ingesloten door het P element. |
CascadingSommige style sheet talen, zoals Cascading Style Sheets, bieden de mogelijkheid stijlinformatie uit verschillende bronnen (inline stijlen, ingesloten stijlblokken en externe stijlbladen) te combineren. Het mechanisme dat bepaalt welke stijlregels voorrang krijgen bij het combineren, heet "cascading". In het algemeen is de volgorde waarin LINK en STYLE elementen in de head van een document staan, bepalend: een later style sheet heeft een hogere prioriteit dan een eerder style sheet. Daarnaast is bij Cascading Style Sheets de specificiteit belangrijk: hoe meer specifiek een stijlregel is, hoe meer prioriteit deze heeft. |
Alternatieve stijlbladenIn de eerder gegeven voorbeelden voor het koppelen van externe stijlbladen aan een document is het TITLE element niet aan het LINK element toegevoegd:
Naast of in plaats van deze "vaste" stijlbladen (welke in alle gevallen door de browser gebruikt moeten worden) biedt HTML 4.0 de mogelijkheid alternatieve stijlbladen te specificeren. Bijvoorbeeld een stijlblad voor normaal gebruik en een stijlblad met grotere letters voor mensen met een verminderd gezichtsvermogen. Deze alternatieven zouden door de browser aan de gebruiker gepresenteerd moeten worden, waarna deze een keuze kan maken. Een alternatief stijlblad wordt gedefinieerd door voor het REL attribuut van het LINK element de waarde "alternate stylesheet" op te nemen. Het TITLE element wordt gebruikt om een alternatief stijlblad een naam te geven. Deze naam kan de browser gebruiken bij de presentatie van de alternatieven.
Een alternatief kan uit meerdere stijlbladen bestaan. Via het TITLE attribuut krijgen deze stijlbladen dezelfde naam. Als het alternatief gekozen wordt, moet de browser alle erbij behorende stijlbladen gelijktijdig gebruiken. Door voor één van de alternatieven als waarde voor het REL attribuut niet "alternate stylesheet" maar gewoon "stylesheet" op te nemen, wordt dat alternatief als voorkeur aangewezen. Deze voorkeur wordt aangehouden indien de gebruiker geen keuze maakt uit de verschillende alternatieven. Het TITLE attribuut moet in dit geval wel gebruikt worden, omdat het stijlblad anders niet als alternatief, maar als "vast" stijlblad gezien wordt.
Ook het META element kan gebruikt worden om aan te geven dat een stijlblad de voorkeur heeft. Als waarde voor het CONTENT attribuut wordt dan de naam van het stijlblad opgenomen:
Wanneer zowel het LINK element als met het META element gebruikt zijn om een stijlblad als voorkeur te definiëren, dan gaat die via het META element voor. Indien meerdere stijlbladen als voorkeur gedefinieerd worden met het META element, dan wordt het stijlblad gebruikt, dat als laatste is opgenomen. Indien twee of meer LINK elementen stijlbladen met voorkeur definiëren, dan heeft het stijlblad dat als eerste is opgenomen voorrang. De verschillende soorten stijlbladen mogen ook gelijktijdig gebruikt worden:
In bovenstaand voorbeeld wordt het stijlblad "basis.css" altijd gebruikt. Afhankelijk van de keuze van de gebruiker wordt "basis.css" gecombineerd met "standaard.css" of "groot.css". Indien de gebruiker geen keuze maakt, wordt "basis.css" in combinatie met het stijlblad met voorkeur "standaard.css" gebruikt. Het gebruik van alternatieve stijlbladen wordt op dit moment niet ondersteund door de verschillende browsers. |
Inhoud Handleiding HTML Index Inhoud Style Sheets
|