Content opmaken met :first-child en :last-child

Voor bepaalde toepassingen is het handig als de opmaak van de eerste alinea van een pagina (<p>-tag) verschilt van de rest. Denk daarbij aan een artikel, dat begint met een korte samenvatting, zoals op deze bladzijde.

Hetzelfde kan gelden voor de laatste alinea. Als je naar beneden scrollt dan zie je dat de tekst van de laatste alinea een afwijkende kleur heeft. Dat geldt ook bij het eerste punt (<li>-tag) van de ongeordende lijsten (<ul>-tags) hier onder.

Met behulp van CSS is een en ander eenvoudig te realiseren. Op deze pagina wordt uitgelegd hoe je dat doet.

Het omzeilen van scope-problemen
Hierboven is genoemd dat het niet altijd duidelijk is welk block-element er nu het eerste, tweede, enz. child is. Dat heet een 'scope-probleem'.
Je omzeilt het door zelf parents te definiëren. Dat doe je door delen van je pagina in ter sluiten in <div>-tags, die je een id meegeeft. Op deze pagina is één zo'n <div>-tag gebruikt, met id="OpmaakDemo. Zie de code hier onder.

<body>
  <h1>De Kop</h1>
  <div; id="OpmaakDemo">
  <p>Eerste P-tag</p>
  <p>Tweede P-tag</p>
  <ul>
    <li>Lijst-item 1</li>
    <li>Lijst-item 2</li>
    <li>Lijst-item 3</li>
  </ul>
  <p>Derde P-tag</p>
  <ul>
    <li>Lijst-item A</li>
    <li>Lijst-item B</li>
    <li>Lijst-item C</li>
  </ul>
  <p>Laatste P-tag</p>
  </div>
</body>

De CSS-code staat hier onder.

Opmerking: Het is overigens mogelijk om elk child apart te benoemen en daarmee scope-problemen te omzeilen. Zie daarvoor het item Content opmaken met :nth-child().

Gebruik:

De CSS-code voor het tweede voorbeeld ziet er als volgt uit:
 
(Zet dit in de <HEAD>).

<style>
div#OpmaakDemo p:first-child { color:navy; font-weight:bold }
div#OpmaakDemo p:last-child { color:magenta }
li:first-child { color:#00a }
</style>
De regels die beginnen met div#OpmaakDemo gelden alleen binnen de tag <div; id="OpmaakDemo">. De regel voor li geldt vcor het hele document. Dat betekent dat deze werkt bij alle lijsten <ol> en <ul>. Op deze pagina zijn twee ongeordende lijsten (<ul>) gebruikt.

Opmerking:
 
Dit is de laatste paragraaf. Deze is opgemaakt met :last-child.

 
terug

html-360; Laatste wijziging: 21 mei 2020