Selectors

leestijd: 6 minuten

voorrang stijlregels

Selectors

drawing

De Selector selecteert welke HTML elementen worden aangepast door CSS. Een CSS selector kan bijvoorbeeld alle <p> elementen selecteren, zodat CSS de tekstkleur daarvan kan aanpassen.
Een stijlregel wordt dus toegepast op alle elementen die overeenkomen met de selector. CSS heeft verschillende soorten selectors.

Selectors overzicht

selector voorbeeld uitleg
De element selector p Selecteer alle <p> elementen.
De element selector is de simpelste: Je gebruikt de tagnaam van het HTML element als selector, en alle HTML elementen met die tagnaam zullen vanaf dan deze stijlregels volgen.
De ALL selector * Selecteer alle elementen.
De * selector wordt gebruikt om stijlregels toe te passen op alle elementen. Wil je dat alle elementen op je website een bepaald lettertype gebruiken, kan je hiervoor de * selector gebruiken.
De class selector .intro Selecteer alle elementen met class="intro".
Wanneer elementen zijn gemarkeerd met het class-attribute kan je deze elementen ook een eigen stijl geven. Je doet dit door middel van een punt, gevolgd door de naam die je in het class-attribute hebt geschreven.
De id selector #firstname Selecteer het element met id="firstname".
Wanneer elementen zijn gemarkeerd met het ID-attribute kan je deze elementen een eigen stijl geven. Je doet dit door middel van een hekje, gevolgd door de naam die je in het ID-attribute hebt geschreven.
Selectors combineren div, p Selecteer alle <div> elementen en alle <p> elementen.
Geneste elementen selector div p Selecteer alle <p> elementen die zich bevinden in <div> elementen.
Parent-child selector div > p Selecteer alle <p> elementen waarvan de parent een <div> element is.
After selector div + p Selecteer alle <p> elementen die direct na <div> elementen staan.
Before selector p ~ ul Selecteer elk <ul> element dat wordt voorafgegaan door een <p> element.

Voorrang van selectors

Opbouw van stijlregels

Wanneer verschillende selectors van toepassing zijn, gaat CSS proberen al deze selectors met elkaar te combineren.

Een div element van de klasse “content” en een ID “koptekst” kan reageren op 3 selectors:

  1. div
  2. .content
  3. #koptekst

Bijvoorbeeld:

div {
	background-color: red;
}
.content {
	color: green;
}
#koptekst {
	font-family: verdana;
}

Wanneer, zoals in bovenstaand voorbeeld, alle 3 de selectors stijlregels krijgen, wordt voor het element <div class="content" id="koptekst"> een combinatie gemaakt van deze 3 stijlregels:

	background-color: red;
	color: green;
	font-family: verdana;

Conflicterende stijlregels

Stijlregels kunnen soms conflicteren: Wanneer je een div element van de klasse “content” hebt voorzien en een ID “koptekst” hebt gegeven, kan het wel eens gebeuren dat verschillende selectors dezelfde stijlregels proberen toe te passen:

div {
	Background-color: red;
}
.content {
	Background-color: green;
}
#koptekst {
	Background-color: blue;
}


Het is daarom belangrijk om te weten welke selector voorrang krijgt.De algemene regel is: hoe specifieker de selector, hoe meer voorrang.

De selectors die we tot nu toe bekeken hebben hebben hun voorrang als volgt:

  1. De ID selector overschrijft alle andere stijlregels.
  2. De Class selector overschrijft alle stijlregels, behalve die van de ID selector.
  3. De element selector volgt na de Class selector.
  4. De * selector wordt enkel aan het einde toegevoegd, als alle andere stijlregels zijn toegepast.

Wanneer twee selectors even specifiek zijn geldt de onderste stijlregel in de css code.

In volgend voorbeeld zal elke <div> een groene achtergrond kleur krijgen.

div {
	Background-color: red;
}
div {
	Background-color: green;
}

State Selectors

In andere hoofdstukken werd bekeken hoe CSS de standaard opmaak van een element kan veranderen.

Gebruikers van een website kunnen de opmaak van een element echter aanpassen:

De gebruiker past door zijn acties elementen aan, en als webdesigner wil je dat je opmaak deze aanpassingen weergeeft.

Dit gebeurt aan de hand van CSS state selectors. Een state gaat over een specifieke momentopname van een element.

Enkele voorbeelden:

State selectors gebruiken

State selectors zijn een uitbreiding op de CSS selectors die je al kent. Wanneer je een aan de hand van een selector een element hebt opgemaakt, kan je aan die selector een State Selector toevoegen met een dubbelpunt.

drawing

Andere State Selectors

Sommige state selectors dienen om specifieke elementen aan te duiden. Enkele voorbeelden:

State selector voorbeelden

Hyperlinks hebben 4 State Selectors die je bijna altijd moet definieren:

/* link waar nog niet op geklikt is */
a:link {
    color: #FF0000;
}

/* link waar al wel op geklikt is */
a:visited {
    color: #00FF00;
}

/* link waar de muis over staat */
a:hover {
    color: #FF00FF;
}

/* link die verwijst naar de huidige pagina */
a:active {
    color: #0000FF;
}

Belangrijk:
a:hover MOET komen na a:link en a:visited om te werken! (als je a:link en/of a:visited hebt gedefinieerd)
a:active MOET komen na a:hover om te werken! (als je a:hover hebt gedefinieerd)