Tehnici DOM: elemente de părinte, copil și vecin. Selectoare de copii Care element este părintele etichetei de titlu

Bună ziua, dragi cititori! Continuând subiectul selectoarelor CSS, vreau să vă aduc în atenție descrierea selectoarelor de copil și de context, precum și analiza lor comparativă, întrucât după logica de aplicare sunt foarte asemănătoare, deși au unele diferențe.

În publicațiile mele m-am oprit în detaliu diverse tipuri Selectoare CSS: ; precum și . Apropo, în ultimul articol, unde am discutat diferite tipuri selector de atribute, am descris în detaliu modul în care calculele mele teoretice pot fi verificate imediat prin modificarea codului HTML și CSS online folosind instrumentul încorporat Google Chrome(). Astfel de instrumente de editare au cele mai recente modificări ale tuturor browserelor populare, inclusiv pluginul Firebug pentru Firefox ().

De asemenea, puteți studia materialul teoretic din această postare editând orice pagină a oricărui site! Pentru a face acest lucru, trebuie doar să apăsați F12 dacă utilizați Google Chrome sau Mozilla Firefox(). Acum voi prezenta conținutul etichetei p, pe care o vom studia ca exemplu selectoare CSS copil și contextuale:

Acest paragraf include em și etichete puternice de formatare care evidențiază textul îndrăzneţŞi cursive.

Folosind instrumentul de editare descris mai sus, am inserat acest paragraf direct în acest articol, introducând textul corespunzător în partea stângă a ferestrei de editare, drept urmare textul acestui paragraf a apărut chiar în partea de sus a paginii:


Acest construct HTML, . Acest paragraf va fi un subiect de testare în publicația de astăzi, folosind exemplul său, voi arăta cum se modifică designul textului său, în funcție de ce selectoare - copil sau contextuale - sunt utilizate în regula CSS;

Un element copil este un element care se află direct în interiorul său părinte.. Înainte de a trece direct la subiect, voi oferi o imagine care reflectă ierarhia etichetelor în document HTML folosind exemplul paragrafului al cărui text este dat mai sus și pe care îl vom analiza astăzi:

Acest design se mai numește și arbore de elemente. Această figură arată clar imbricarea containerelor, ceea ce sugerează relații ierarhice între etichete. Eticheta de paragraf p este un copil al . În același timp, eticheta puternică nu este un copil al div-ului, deoarece se află în containerul p.

Selector CSS copil

Un selector copil dintr-un arbore de elemente este întotdeauna situat direct în interiorul elementului părinte, în acest caz sintaxa pentru scrierea unui selector CSS ar fi următoarea:

Stilul va fi aplicat Selectorului 2, dar numai dacă este un copil al Selectorului 1. Să-l privim mai detaliat folosind captura de ecran de mai sus a arborelui de elemente. De exemplu, urmând sintaxa, puteți seta o regulă ca aceasta:

P> em (culoare: verde;)

Această regulă va afecta ultimul cuvânt al paragrafului care urmează să fie „cursiv”, deoarece acesta este ceea ce este inclus între etichetele em de deschidere și de închidere. Eticheta em este un copil al lui p deoarece este plasată direct în interiorul acesteia, astfel încât textul conținutului, și anume cuvântul „italic”, va fi colorat în verde.


Cu toate acestea, cealaltă etichetă em nu este un descendent direct al etichetei p, deoarece face parte din eticheta puternică, drept urmare partea „em și etichete de formatare puternice” a paragrafului nu va fi colorată.

Selector CSS contextual

E timpul să-ți dai seama ce este un selector contextual CSS. Când așezați o anumită pagină pe un site web, etichetele sunt adesea imbricate una în alta. Pentru ca stilurile pentru astfel de elemente să funcționeze corect, se folosesc selectoare care acționează într-un anumit context, de unde și numele.

Dacă pentru a putea fi aplicată o regulă CSS, selectorul copil trebuie să fie situat direct în interiorul elementului părinte (primul nivel de imbricare), atunci pentru selectorul de context acest lucru este complet neimportant și se poate aplica orice nivel de imbricare, proprietățile elementul va fi transferat în continuare de la părinte. Sintaxa este aceasta:

După cum puteți vedea, un selector de context constă din selectoare simple separate printr-un spațiu. Pentru selectoarele contextuale, este permisă utilizarea a două sau mai multe etichete imbricate. Să creăm acum o regulă CSS pentru paragraful testat, pe care l-am citat mai sus:

P em (culoare: verde;)


După cum puteți vedea, nu numai textul unei părți din conținutul paragrafului, care este inclus direct în eticheta de formatare em, adică cuvântul „italicized”, este colorat în verde, ci și o secțiune a textului unei alte etichete em. , care face parte și din eticheta puternică. Acest lucru s-a întâmplat pentru că există o regulă cu un selector de context, pentru care nivelul de imbricare nu este important, spre deosebire de selectorul de copii. Aceasta este diferența fundamentală dintre un copil și un selector de context.

Să ne uităm la un alt exemplu al modului în care selectoarele contextuale și secundare interacționează cu paragraful nostru. Să scriem următoarele reguli CSS pentru copil și selector de context:

Div em (culoare: roșu;) p> em (culoare: verde;)

După aceasta, paragraful nostru are următorul design:


După cum puteți vedea, o bucată de text inclusă în etichete em și etichete puternice este colorată în roșu, deoarece regula selectorului de context este valabilă pentru aceasta, adică eticheta em este închisă în containere puternice și div, iar nivelul de imbricare, ca deja notat, nu contează.

Se pune întrebarea: de ce cuvântul „italicizat”, care este și conținutul lui em, este colorat în verde? La urma urmei, regula selectorului de context este relevantă și pentru el. Dar pentru această secțiune a textului paragrafului este valabilă și regula selectorului de copii, deoarece nu contrazice condiția ca pentru un selector de copii, elementul să fie inclus direct în eticheta p.

Cert este că în CSS există o lege de prioritate pentru proprietățile CSS situate mai jos. Adică, în acest caz, regula selectorului de copii este situată mai jos în document decât Stiluri CSS, scris pentru selectorul de context al containerului div. Prin urmare, cuvântul „italic” a devenit verde. Dacă le schimbați, atunci regula „p> em (culoare: verde;)” nu se mai aplică, iar secțiunea „italic” a textului va fi roșie.

Vlad Merjevici

Un element copil este un element care se află direct în interiorul unui element părinte. Pentru a înțelege mai bine relațiile dintre elementele documentului, să ne uităm la un mic cod (exemplul 12.1).

Exemplul 12.1. Imbricarea elementelor într-un document

HTML5 CSS 2.1 IE Cr Op Sa Fx

Lorem ipsum

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.

Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

ÎN în acest exemplu Sunt folosite mai multe containere, care sunt amplasate unul în celălalt în cod. Acest lucru poate fi văzut mai clar în arborele elementelor, care este denumirea dată structurii relațiilor dintre etichetele documentelor (Fig. 12.1).

Orez. 12.1. Exemplu de arbore de elemente

În fig. Figura 12.1 prezintă imbricarea elementelor și ierarhia acestora într-o formă convenabilă.

Aici elementul copil al etichetei

eticheta iese în afară Cu toate acestea, eticheta

nu este un copil al etichetei

, deoarece se află într-un container

Să revenim acum la selectori. Un selector copil este unul care se află direct în interiorul elementului părinte din arborele de elemente. Sintaxa pentru utilizarea unor astfel de selectoare este următoarea.

Selector 1 > Selector 2 (Descrierea regulilor de stil)

Stilul este aplicat Selectorului 2, dar numai dacă este un copil al Selectorului 1. Referindu-ne la Exemplul 12.1, stilul de vizualizare P > EM (culoare: roșu) ar fi setat la primul paragraf al documentului, deoarece eticheta

se află în interiorul recipientului Și nu va da niciun rezultat pentru al doilea paragraf. Și totul pentru că eticheta în al doilea paragraf se află într-un container

, prin urmare condiția de cuibărit este încălcată.

În logica lor, selectoarele de copii sunt similare cu selectoarele de context. Diferența dintre ele este următoarea. Un selector de copii este stilat numai dacă este un copil direct, adică situat direct în elementul părinte. Pentru un selector de context, este permis orice nivel de imbricare. Pentru a clarifica despre ce vorbim, să ne uităm la următorul cod (exemplul 12.2).

HTML5 CSS 2.1 IE Cr Op Sa Fx

Exemplul 12.2. Selectoare contextuale și pentru copii

Lorem ipsum dolor sit amet Selectoare pentru copii , consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna

Aliguam erat volutpat.

Rezultatul acestui exemplu este prezentat în Fig. 12.2.

Orez. 12.2. Culoarea textului setată folosind un selector de copii Pentru a eticheta în exemplu, două reguli funcționează simultan: selector de context (tag

situat în interior ) și selector de copii (tag

este o filială a

Rețineți că, în cele mai multe cazuri, puteți evita adăugarea de selectoare copii prin înlocuirea lor cu selectoare de context. Cu toate acestea, utilizarea selectoarelor de copii extinde capacitatea de a controla stilurile de elemente, ceea ce vă permite în cele din urmă să obțineți rezultatul dorit, precum și un cod simplu și clar.

Cel mai convenabil este să utilizați acești selectori pentru elemente care au o structură ierarhică - aceasta include, de exemplu, tabele și diverse liste.

Exemplul 12.3 arată modificarea aspectului unei liste folosind stiluri. Prin imbricarea unei liste în alta obținem un tip de meniu. În acest caz, titlurile sunt situate orizontal, iar setul de legături este situat vertical sub titluri (Fig. 12.3).

Orez. 12.3. Lista ca meniu

Pentru a poziționa textul pe orizontală, proprietatea stil float este adăugată la selectorul LI. Pentru a separa stilul unei liste orizontale și verticale, se folosesc selectoare pentru copii (exemplul 12.3).

HTML5 CSS 2.1 IE Cr Op Sa Fx

Exemplul 12.2. Selectoare contextuale și pentru copii

Mare

În acest exemplu, selectoarele de copii sunt obligate să separe stilul elementelor de listă de nivel superior și listele imbricate, care servesc unor scopuri diferite, astfel încât stilul pentru acestea să nu se suprapună.

Întrebări de verificat

1. Ce culoare va fi textul cursiv aldine din cod? Standardele de iluminare se bazează pe pe baza clasificării lucrărilor vizuale

după anumite caracteristici cantitative.

Când utilizați următorul stil?
P (culoare: verde; )
B (culoare: albastru; )
I (culoare: portocaliu; )
B > I (culoare: măsline; )

  1. P > I (culoare: galben; )
  2. Verde.
  3. Albastru.
  4. Portocale.
  5. măsline.

Galben. ? </b></p> <ol><li><HEAD></li> <li><BODY></li> <li><HTML></li> <li><META></li> <li><!DOCTYPE></li> </ol><p><b>2. Care element este elementul părinte pentru etichetă<!DOCTYPE>3. Pentru care etichetă este elementul</b></p> <ol><li><HTML></li> <li><TITLE></li> <li><BODY></li> <li><HEAD></li> <li>actioneaza ca parinte?</li> </ol><h2>Nu pentru orice etichetă.</h2> <p>Răspunsuri</p> <p>1. Măslin.</p> <p>3. Nu pentru orice etichetă.</p> <p>Selectorii copii CSS sunt selectori care sunt utilizați pentru a aplica stiluri elementelor numai atunci când sunt copii ai altor elemente (părinte). Asemenea selectoarelor de descendenți, selectorii de copii sunt compuși și sunt formați din selectori simpli (clase, identificatori etc.).</p><p> <тег1> <тег2>...</тег2> <тег3><тег4>...</тег4></тег3> </тег1> </p><p>Și din nou, dacă ați uitat ce sunt elementele copil, atunci să ne amintim uitându-ne la un exemplu care vă este deja familiar.<тег2>Se spune că un element este un copil al altui element dacă se află la primul nivel de cuibărit în interiorul acestuia. În exemplul nostru<тег3>Şi<тег1>sunt fiice<тег4>, A<тег3> .</p> <p>Selectorii de copii constau din doi sau mai mulți selectori simpli, despărțiți de un semn „>”, unde mai întâi este specificat părintele, apoi copilul acestuia, apoi copilul acelui copil etc. Adică, ca și în selectoarele de descendenți, este specificată calea prin arborele documentului. Stilurile vor fi aplicate numai elementelor ai căror selectori sunt ultimii în listă. Sintaxa generala:</p> <p>selector1 > selector2 (</p> <p>Spațiile de pe ambele părți ale semnului „>” pot fi plasate sau nu, după dorință.</p> <p>Exemplu de utilizare a selectoarelor secundare CSS</p><p> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Exemplul 12.2. Selectoare contextuale și pentru copii

Alineatul 1.

paragraful 2.

Rezultat în browser

Alineatul 1.

paragraful 2.

Există două lucruri la care trebuie să fii atent în acest exemplu. Există trei elemente aici, dar doar două dintre ele au margini, umplutură și margini. De ce? Și al doilea punct. Doar primul paragraf are text albastru.

Internet Explorer 6.0 nu înțelege selectoarele pentru copii, așa că dacă îți construiești site-ul având în vedere acest browser mai vechi - ține cont de asta.

Selectori copii în tabelele HTML

Mulți începători (și uneori nu începători) în crearea de site-uri web întâmpină anumite probleme atunci când folosesc selectoare copii în tabelele HTML. Ca să înțelegeți despre ce vorbim, să ne uităm la o astfel de masă obișnuită.

Celula 1.1Celula 1.2
Celula 2.1Celula 2.2

Și acum întrebarea. Ce ai face dacă ar fi nevoie să folosești selectoare pentru copii pentru a trece de la o etichetă la celule? Dacă decideți să scrieți așa, atunci este incorect:

tabel > tr > td ( proprietate: valoare; proprietate: valoare; ...)

Poți ghici de ce este greșit? Nu? Cert este că ați uitat de încă un element - care, chiar dacă nu este specificat explicit, este încă prezent invizibil în fiecare tabel HTML. Pur și simplu nu are etichetele necesare de deschidere și închidere, așa că este adesea uitat de el. Apropo, da, în Tutorial HTML Nu am trecut prin ea, pentru că, în realitate, indicarea sa explicită este rareori necesară. Ei bine, cred că ați ghicit deja care va fi intrarea corectă, dar vă voi arăta oricum.

table > tbody > tr > td ( proprietate: valoare; proprietate: valoare; ...)

Apropo, nu numai tabelele au elemente cu etichete de deschidere opționale, există și astfel de elemente. Doar că, în practică, „problemele uitării” apar cel mai des cu tabelele, motiv pentru care v-am atras atenția asupra acestui lucru.

Teme pentru acasă.

  1. Setați pagina la dimensiunea fontului Arial 0.9em și un fundal.
  2. Scrieți mai multe titluri și paragrafe pe pagină, modificați dimensiunea și culoarea textului titlului după cum credeți de cuviință.
  3. Asigurați-vă că linkurile direct în paragrafele paginii sunt albastre fără subliniere. Dar, în același timp, dacă linkurile sunt încadrate suplimentar cu orice etichetă, de exemplu pentru cursive, atunci acestea ar trebui să fie afișate subliniat și cu roșu. Încă o dată, vă atrag atenția asupra faptului că nu trebuie să specificați stiluri de link cu fiecare etichetă de încadrare separat, faceți-o universală. Cum? Gândește-te la asta.
  4. Creați un mic meniu în partea dreaptă a paginii și reparați-l, pentru aceasta veți avea nevoie de o proprietate și de alte câteva proprietăți care o însoțesc, vă veți da seama acolo. În același timp, lăsați meniul nu numai să rămână pe loc în fereastra browserului, dar și să nu se strecoare în conținutul paginii atunci când derulați.

Cred că ultimul punct al lecției va fi cel mai dificil pentru tine, dar nu încerca să te cufunda complet în stăpânirea poziționării imediat. Fă-ți temele. Apropo, acest element nu va funcționa în Internet Explorer 6.0, deoarece bătrânul nu înțelege poziționarea fixă.

Sarcina principală a acestui selector decurge din numele său și este de a accesa un element copil. Afișat folosind un semn primitiv „>”, care leagă elementul copil de elementul părinte. De asemenea, este de remarcat faptul că în circulație se folosesc selectoare simple. Ca exemplu, luați în considerare următoarea codificare:

Element > ul ( padding-top: 20px; )

Această codificare înseamnă că o listă imbricată într-un element va avea o umplutură de 20 de pixeli de la marginea de sus. Prezența pictogramei „>” în această intrare indică faptul că regula se va aplica numai listelor de la primul nivel de imbricare.

O analiză detaliată a modului în care funcționează selectorul de elemente copil

Un selector de element copil are proprietăți similare conceptului de selector descendent. Cu toate acestea, există o trăsătură caracteristică care arată diferența fundamentală dintre aceste operațiuni. Constă în faptul că influența selectorului descendent se extinde la absolut toate elementele, în timp ce selectorul copil subordonează stilurile de poziții ale primului nivel de clasificări.

Următorul exemplu vă va ajuta să evaluați mai clar activitatea operatorului selector de copii:

Div > p (culoare: #ff0000; /* roșu */ )

< div> Această linie va avea text negru în mod implicit.< span>Această linie devine roșie din cauza faptului că p este o etichetă copil pentru div. < p>Vedem din nou litere negre.< span>Aici vedem și simboluri negre, deoarece pentru acest interval părintele este eticheta p.

Acest exemplu confirmă funcționarea operatorului selector de copii în funcție de gradul de imbricare.

Restricție pentru utilizarea operatorului selector de copii

Este de remarcat faptul că această operațiune este acceptată de toate browserele, cu excepția legendarului Internet Explorer 6. Cred că puțini oameni folosesc acest browser, cu toate acestea, dacă există astfel de unice, atunci pentru ei există o cale de ieșire din situație, care va fi descrisă într-un articol separat.

De ce este folosit?

Programatorii apelează la selectorii de elemente copil atunci când trebuie să-și atribuie propriul stil unic elementelor imbricate. De asemenea, utilizarea acestui selector poate reduce cantitatea de CSS, ceea ce va îmbunătăți lizibilitatea documentului. După cum arată practica, această operație este cel mai des folosită la crearea meniurilor derulante.

Selectorul de elemente copil este, de asemenea, folosit pentru a atribui stiluri unice elementelor ai căror părinți sunt deja cunoscuți. Cu alte cuvinte:

Principal > antet ( /* decorarea se aplică numai antetului principal */ }

Acest exemplu este valabil în cazurile în care eticheta antet este utilizată pentru a evidenția titlurile articolelor. În cazul nostru, setăm designul numai pentru antetul principal și nu le afectăm pe cele secundare. Această tehnică vă permite, de asemenea, să evitați utilizarea unor identificatori inutile, care la rândul lor ușurează greutatea fișierului CSS și îl face mai ușor de citit.

Rezumând

Astfel, operatorul element copil poate fi folosit nu numai pentru a proiecta meniuri derulante, ci și pentru a optimiza ușor resursa de internet pentru munca roboților de căutare.

Elementele copil sunt elemente care sunt situate direct în interiorul unui element părinte. Observați cuvintele: direct înăuntru.

Să ne uităm la un exemplu cod html simplu:

Elemente copil.

Paragraful și în el gras element și iată-l înclinat element.

Aici grasŞi subliniat și oblic elemente.

Acest cod are două paragrafe. Există elemente inline în interiorul paragrafelor , Se spune că un element este un copil al altui element dacă se află la primul nivel de cuibărit în interiorul acestuia. În exemplul nostru . În al doilea paragraf eticheta imbricat într-o etichetă .

Acum haideți să adăugăm stiluri CSS la acest cod html folosind selectoare de copii.

Sintaxa pentru selectoarele de copii:

Selector 1 > Selector 2 ( Proprietate: valoare; )

Iată codul actualizat:

Elemente copil.

Paragraful și în el gras element și iată-l înclinat element.

Aici grasŞi subliniat și oblic elemente.

Deci, să ne amintim: un element copil este un element imbricat direct în părinte. Adică, un element copil este un descendent de primul nivel. Să fim atenți la etichetă , în primul paragraf este imbricat într-o etichetă

Și în al doilea este imbricat într-o etichetă , deși este și un copil al etichetei

Prin urmare, în al doilea paragraf, regula CSS pentru selectorul de copii p>i ( culoare : albastru ; ) nu va funcționa - textul italic al celui de-al doilea paragraf nu va fi afișat în albastru.

Figura 1. Exemplul #1 la locul de muncă.

Accesați elementul html al doilea paragraf poate fi folosit folosind regula CSS: p>u>i ( culoare : albastru ; ).

Să folosim această regulă pentru a seta galben textul italic al celui de-al doilea paragraf.

Elemente copil.

Paragraful și în el gras element și iată-l înclinat element.

Aici grasŞi subliniat și oblic elemente.

Acest stil va funcționa și textul italic din al doilea paragraf va fi afișat cu galben.

Figura 2. Exemplul nr. 2 în acțiune.

Exemplu mai complex

Avem cod html:

Elemente copil.

Implicit este interpretat astfel:

Sarcină: când Ajutor CSS transforma această listă într-un meniu orizontal.


Figura 3. Scopul schimbării.

Iată o soluție la această problemă folosind selectoare de copii:

Elemente copil.

Pentru o mai bună înțelegere a acestui exemplu, citiți mai departe.