De structuur van een HTML-document is vergelijkbaar met een stamboom. In je familie heb je je ouders en anderen die je zijn voorgegaan. Dit zijn je voorouders. Kinderen en degenen die achter je komen op die boom zijn jouw nakomelingen. HTML werkt op een vergelijkbare manier. Elementen die binnenin andere elementen zitten, zijn hun afstammelingen. Bijvoorbeeld, aangezien bijna elk HTML-element er in zit
tags, ze zouden daar een afstammeling van zijn elementen. Deze relatie is belangrijk om te begrijpen wanneer u met CSS begint te werken en moet gericht zijn op specifieke elementen om visuele stijlen toe te passen.CSS Descendant Selectors
Een CSS-afstammingselectie is van toepassing op de elementen binnen een ander element (of beter gezegd, een element dat een afstammeling is van een ander element). Een ongeordende lijst heeft bijvoorbeeld een tag met tags als afstammelingen. Laten we de volgende HTML als voorbeeld gebruiken:
- dit is een link
De LI
tags zijn afstammelingen van de UL
label. De EEN
tag is een afstammeling van beide de LI
(onderliggende afstammeling) en UL
(kleinkind-afstammelingen) tags. Als je hierover nadenkt, gebruik dan het stamboomvoorbeeld, de
- zou de ouder zijn, de
- zou het kind van dat element zijn, en het zou het kind van de zijn
- en het kleinkind van de
- .
- ). Alle andere links op de pagina die geen afstammeling zijn van een lijstitem zouden deze stijl niet krijgen.
Een belangrijk ding om te onthouden is dat het niet uitmaakt hoeveel tags ze bevatten tussen de tags die u mogelijk gebruikt in uw onderliggende selector. Als het tweede element ergens binnen het eerste element is ingesloten, wordt het als een afstammeling geselecteerd.
Als je alle ankers wilt selecteren die afstammen van ul-elementen, zou je schrijven:
ul een {text-decoration: none; }
Nu zijn deze stijlen van toepassing op elke koppeling die een afstammeling is van een lijstitem. Je zou ook deze selector kunnen schrijven
ul li a {text-decoration: none; }
Dit is een onderliggende selector die meer dan twee typen selectors gebruikt. In dit geval zou dit van toepassing zijn op koppelingen die zich binnen in een lijstitem bevinden en ook in een niet-geordende lijst.
Class Selectors en ID Selectors gebruiken
De selectors waarvan u afstamt, hoeven niet altijd afstammelingen van het type te zijn. Stel u bijvoorbeeld voor dat u een gedeelte van de site had (zoals een divisie) met een ID-kenmerk van 'billboard'. U kunt een onderliggende kiezer instellen op die ID:
#billboard ul {background-color: #ccc; }
Dit zou de ongeordende lijst stylen die een afstammeling is van een element met een ID van "billboard". U kunt hetzelfde doen voor klassenwaarden.
div.billboard ul {background-color: #ccc; }
Dit veronderstelt dat de divisie een klassenwaarde heeft van "billboard". De CSS hierboven zou het
- element binnen elke divisie die deze klassenwaarde heeft.
Je kunt heel hardhandig en uitgebreid worden met nakomende selectors. Als u bijvoorbeeld Dreamweaver gebruikt om uw HTML-code te schrijven, is er een instelling wanneer u nieuwe CSS-regels toevoegt die automatisch de selector maken op basis van de plaatsing van uw cursor op die pagina. Wat Dreamweaver in dit geval doet, is een wildrijke uitgebreide en lange nakomeling-selector maken. Die specificiteit is niet nodig om uw CSS te laten werken. Wat u wilt doen, is een balans vinden tussen een nakomelingskiezer die specifiek genoeg is, zodat u kunt inzoomen op de exacte elementen die u nodig hebt (zonder stijlen die u niet wenst te beïnvloeden) zonder CSS-regels te hebben met selectors die overdreven zijn groot.
Dus hoe zou u specifieke elementen in een webpagina targeten met behulp van deze onderliggende selectors? Eerst moet je nakomelingsselectoren definiëren door twee (of meer) type selectors te gebruiken, gescheiden door spaties.
li a {text-decoration: none; }
In dat voorbeeld zijn de stijlen alleen van toepassing op een linkelement () dat een afstammeling is van een element met een lijstitem (
- ). Alle andere links op de pagina die geen afstammeling zijn van een lijstitem zouden deze stijl niet krijgen.