Structura unui document HTML este similară unui arbore genealogic. În familia ta, ai părinți și alții care au venit în fața ta. Acestea sunt strămoșii voștri. Copiii și cei care vin după tine pe acel copac sunt descendenții tăi. HTML funcționează într-un mod similar. Elementele care se află în interiorul altor elemente sunt descendenții lor. De exemplu, deoarece aproape fiecare element HTML se află în interiorul
tag-uri, ar fi descendentul aia elemente. Această relație este importantă pentru a înțelege atunci când începeți să lucrați cu CSS și trebuie să vizați anumite elemente pentru a aplica stiluri vizuale.CSS Descendant Selectors
Un selector al descendenților CSS se aplică elementelor care se află în interiorul unui alt element (sau, mai precis, un element descendent al unui alt element). De exemplu, o listă neordonată are o etichetă cu etichete ca descendenți. Să utilizăm următorul exemplu HTML:
- aceasta este o legătură
LI
etichetele sunt descendenți ai UL
etichetă. A
eticheta este descendent ambii LI
(descendentul copilului) și UL
(descendent al nepotului). Dacă vă gândiți să vă gândiți la acest lucru folosind exemplul arborelui genealogic,
- ar fi părintele,
- ar fi copilul acelui element și ar fi copilul lui
- și nepoata lui
- .
- ). Toate celelalte linkuri de pe pagina care nu sunt descendente ale unui element din listă nu ar primi acest stil.
Un lucru important de reținut este că nu contează cât de multe etichete se află între etichetele pe care le folosiți în selectorul descendent. Dacă cel de-al doilea element este închis oriunde în primul element, acesta va fi selectat ca descendent.
Dacă doriți să selectați toate ancorele care sunt descrise din elementele ul, ați scrie:
ul a {text-decoration: nimic; }
Acum, aceste stiluri se vor aplica oricărui link care este descendent al unui element din listă. Puteți scrie și acest selector
ul li a {text-decoration: nimic; }
Acesta este un selector descendent care utilizează mai mult de doi selectori de tip. În acest caz, acest lucru se va aplica legăturilor care se află în interiorul unui element de listă și, de asemenea, în interiorul unei liste neordonate.
Utilizarea selectorilor de clasă și a selectorilor de identificare
Selectorii de la care coborâți nu trebuie să fie mereu descendenți de tip. De exemplu, imaginați-vă că ați avut o zonă a site-ului (ca o divizie) cu un atribut ID al "panoului". Ai putea să înființezi un selector descendent de pe acel cod:
#billboard ul {background-color: #ccc; }
Aceasta ar schița lista neordonată care este descendentă a unui element cu un ID de "panou". Puteți face același lucru și pentru valorile de clasă.
div.billboard ul {fundal-culoare: #ccc; }
Aceasta presupune că diviziunea are o valoare de clasă a "panoului". CSS de mai sus ar schita stilul
- element din interiorul oricărei diviziuni care are această valoare a clasei.
Puteți obține cu adevărat greu și verbose cu selectorii descendenți. De exemplu, dacă utilizați Dreamweaver pentru a scrie codul HTML, există o setare atunci când adăugați noi reguli CSS care vor crea automat selectorul în funcție de plasarea cursorului pe acea pagină. Ceea ce face Dreamweaver în această situație este crearea unui selector de descendenți sălbatici, care este foarte sărac și lung. Această specificitate prea mare nu este necesară pentru ca CSS să funcționeze. Ceea ce vrei să faci este să găsești un echilibru între un selector descendent care este destul de specific, astfel încât să poți detalia elementele exacte de care ai nevoie (fără acelea care nu doresc să le afecteze) fără a avea reguli CSS care au selectori care sunt excesiv mare.
Deci, cum ați viza anumite elemente dintr-o pagină web utilizând acești selectori descendenți? În primul rând, trebuie să definiți selectorii descendenți utilizând două (sau mai multe) selectori de tip separate prin spații.
li a {text-decoration: nimic; }
În acest exemplu, stilurile s-ar aplica numai unui element de legătură () care este descendent al unui element element-list (
- ). Toate celelalte linkuri de pe pagina care nu sunt descendente ale unui element din listă nu ar primi acest stil.