Tecniche DOM: elementi genitore, figlio e vicino. Selettori secondari Quale elemento è il genitore del tag title

Ciao, cari lettori! Continuando l'argomento dei selettori CSS, voglio portare alla vostra attenzione descrizione dei selettori figlio e di contesto, così come la loro analisi comparativa, poiché secondo la logica di applicazione sono molto simili, sebbene presentino alcune differenze.

Nelle mie pubblicazioni mi sono soffermato qualche dettaglio su vari tipi Selettori CSS: ; così come . A proposito, nell'ultimo articolo, dove abbiamo discusso diversi tipi selettore di attributi, ho descritto in dettaglio come i miei calcoli teorici possono essere immediatamente testati apportando modifiche al codice HTML e CSS online utilizzando lo strumento integrato Google Cromo(). Tali strumenti di modifica dispongono delle ultime modifiche di tutti i browser più diffusi, incluso il plug-in Firebug per Firefox ().

Puoi anche studiare il materiale teorico in questo post modificando qualsiasi pagina di qualsiasi sito web! Per fare ciò, basta premere F12 se utilizzi Google Chrome o MozillaFirefox(). Ora presenterò il contenuto del tag p, utilizzandolo come esempio selettori CSS secondari e contestuali:

Questo paragrafo include em e tag di formattazione forte che evidenziano il testo grassetto E corsivo.

Utilizzando lo strumento di modifica sopra descritto, ho inserito questo paragrafo direttamente in questo articolo, inserendo il testo appropriato sul lato sinistro della finestra di modifica, in conseguenza del quale il testo di questo paragrafo è apparso nella parte superiore della pagina:


Questo costrutto HTML, . Questo paragrafo sarà un argomento di prova nella pubblicazione di oggi; utilizzando il suo esempio, mostrerò come cambia il design del suo testo, a seconda di quali selettori - secondari o contestuali - vengono utilizzati nella regola CSS.

Un elemento figlio è un elemento che si trova direttamente all'interno del suo genitore.. Prima di procedere direttamente all'argomento, fornirò un'immagine che riflette la gerarchia dei tag in Documento HTML usando l’esempio del paragrafo il cui testo è riportato sopra e che analizzeremo oggi:

Questo disegno è anche chiamato albero degli elementi. Questa figura mostra chiaramente la nidificazione dei contenitori, che suggerisce relazioni gerarchiche tra i tag. Il tag di paragrafo p è figlio di . Allo stesso tempo, il tag strong non è figlio del div, poiché si trova nel contenitore p.

Selettore CSS secondario

Un selettore figlio in un albero di elementi si trova sempre direttamente all'interno dell'elemento genitore, in questo caso la sintassi per scrivere un selettore CSS sarebbe la seguente:

Lo stile verrà applicato al Selettore 2, ma solo se è figlio del Selettore 1. Esaminiamolo più in dettaglio utilizzando lo screenshot sopra dell'albero degli elementi. Ad esempio, seguendo la sintassi, puoi impostare una regola come questa:

P> em (colore: verde;)

Questa regola farà sì che l'ultima parola del paragrafo sia “in corsivo”, poiché è ciò che è racchiuso tra i tag em di apertura e chiusura. Il tag em è figlio di p perché è posto direttamente al suo interno, quindi il testo del contenuto, ovvero la parola “corsivo”, sarà colorato di verde.


Tuttavia, l’altro tag em non è un discendente diretto del tag p, poiché fa parte del tag strong, per cui la parte “tag di formattazione em e strong” del paragrafo non verrà colorata.

Selettore CSS contestuale

È ora di capirlo cos'è un selettore contestuale CSS. Quando si struttura una determinata pagina su un sito Web, i tag sono spesso annidati uno dentro l'altro. Affinché gli stili di tali elementi funzionino correttamente, vengono utilizzati selettori che agiscono in un determinato contesto, da cui il nome.

Se per poter applicare una regola CSS, il selettore figlio deve essere posizionato direttamente all'interno dell'elemento genitore (il primo livello di nidificazione), allora per il selettore di contesto questo è completamente irrilevante e qualsiasi livello di nidificazione può essere applicato, le proprietà della regola CSS l'elemento verrà comunque trasferito dal genitore. La sintassi è questa:

Come puoi vedere, un selettore di contesto è costituito da semplici selettori separati da uno spazio. Per i selettori contestuali è consentito utilizzare due o più tag nidificati. Creiamo ora una regola CSS per il paragrafo in prova, che ho citato sopra:

P em (colore: verde;)


Come puoi vedere, non solo il testo di parte del contenuto del paragrafo, che è racchiuso direttamente nel tag di formattazione em, cioè la parola "corsivo", è colorato di verde, ma anche una sezione del testo di un altro tag em , che fa anche parte del tag forte. Ciò è accaduto perché esiste una regola con un selettore di contesto, per la quale il livello di annidamento non è importante, a differenza del selettore figlio. Questa è la differenza fondamentale tra un bambino e un selettore di contesto.

Diamo un'occhiata a un altro esempio di come i selettori contestuali e secondari interagiscono con il nostro paragrafo. Scriviamo le seguenti regole CSS per il selettore figlio e contesto:

Div em (colore: rosso;) p> em (colore: verde;)

Successivamente, il nostro paragrafo assume il seguente disegno:


Come puoi vedere, una porzione di testo racchiusa tra i tag em e strong è colorata di rosso perché per essa vale la regola del selettore di contesto, ovvero il tag em è racchiuso nei contenitori strong e div, e il livello di nidificazione, come già notato , non importa.

Sorge la domanda: perché la parola “corsivo”, che è anche il contenuto di em, è colorata di verde? Dopotutto, la regola della selezione del contesto è rilevante anche per lui. Ma per questa sezione del testo del paragrafo è valida anche la regola del selettore figlio, perché non contraddice la condizione secondo cui per un selettore figlio l'elemento deve essere incluso direttamente nel tag p.

Il fatto è che nei CSS esiste una legge di precedenza per le proprietà CSS situate di seguito. Cioè, in questo caso, la regola del selettore figlio si trova più in basso nel documento rispetto a Stili CSS, scritto per il selettore di contesto del contenitore div. Pertanto, la parola “corsivo” è diventata verde. Se li inverti, la regola “p> em (colore: verde;)” non si applica più e la sezione “corsivo” del testo sarà rossa.

Vlad Merzhevich

Un elemento figlio è un elemento che si trova direttamente all'interno di un elemento genitore. Per comprendere meglio le relazioni tra gli elementi del documento, diamo un'occhiata a un piccolo codice (esempio 12.1).

Esempio 12.1. Nidificazione di elementi in un documento

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.

IN in questo esempio Vengono utilizzati più contenitori, che nel codice si trovano uno dentro l'altro. Ciò può essere visto più chiaramente nell'albero degli elementi, che è il nome dato alla struttura delle relazioni tra i tag del documento (Fig. 12.1).

Riso. 12.1. Esempio di albero degli elementi

Nella fig. La Figura 12.1 presenta la nidificazione degli elementi e la loro gerarchia in una forma conveniente.

Ecco l'elemento figlio del tag

sporge l'etichetta Tuttavia, l'etichetta

non è un figlio del tag

, poiché si trova in un contenitore

Torniamo ora ai selettori. Un selettore figlio è quello che si trova direttamente all'interno dell'elemento genitore nell'albero degli elementi. La sintassi per l'utilizzo di tali selettori è la seguente.

Selettore 1 > Selettore 2 (Descrizione regole di stile)

Lo stile viene applicato al Selettore 2, ma solo se è figlio del Selettore 1. Facendo riferimento all'Esempio 12.1, lo stile di vista P > EM ( color: red ) verrebbe impostato sul primo paragrafo del documento perché il tag

è all'interno del contenitore E non darà alcun risultato per il secondo paragrafo. E tutto perché il tag nel secondo paragrafo si trova in un contenitore

, quindi la condizione di nidificazione è violata.

Nella loro logica, i selettori figli sono simili ai selettori di contesto. La differenza tra loro è la seguente. Un selettore figlio ha uno stile solo se è un figlio diretto, ovvero direttamente all'interno dell'elemento genitore. Per un selettore di contesto, è consentito qualsiasi livello di annidamento. Per rendere più chiaro di cosa stiamo parlando, diamo un'occhiata al codice seguente (esempio 12.2).

HTML5 CSS 2.1 IE Cr Op Sa Fx

Esempio 12.2. Selettori contestuali e figli

Lorem ipsum dolor sit amet Selettori bambini , consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna

Aliguam erat volutpat.

Il risultato di questo esempio è mostrato in Fig. 12.2.

Riso. 12.2. Colore del testo impostato utilizzando un selettore figlio Per taggare nell'esempio operano contemporaneamente due regole: selettore di contesto (tag

situato all'interno ) e il selettore figlio (tag

è una filiale di

Tieni presente che nella maggior parte dei casi puoi evitare di aggiungere selettori secondari sostituendoli con selettori di contesto. Tuttavia, l'uso dei selettori secondari espande la capacità di controllare gli stili degli elementi, consentendo in definitiva di ottenere il risultato desiderato, oltre a un codice semplice e chiaro.

È più conveniente utilizzare questi selettori per elementi che hanno una struttura gerarchica, inclusi, ad esempio, tabelle e vari elenchi.

L'Esempio 12.3 mostra come modificare l'aspetto di una lista utilizzando gli stili. Annidando un elenco in un altro otteniamo un tipo di menu. In questo caso, i titoli si trovano orizzontalmente e l'insieme dei collegamenti si trova verticalmente sotto i titoli (Fig. 12.3).

Riso. 12.3. Elenco come menu

Per posizionare il testo orizzontalmente, la proprietà dello stile float viene aggiunta al selettore LI. Per separare lo stile di una lista orizzontale e verticale, vengono utilizzati selettori figli (esempio 12.3).

HTML5 CSS 2.1 IE Cr Op Sa Fx

Esempio 12.2. Selettori contestuali e figli

Grande

In questo esempio, i selettori secondari devono separare lo stile degli elementi dell'elenco di livello superiore e degli elenchi nidificati, che servono a scopi diversi, quindi il loro stile non dovrebbe sovrapporsi.

Domande da verificare

1. Di che colore sarà il testo in grassetto corsivo nel codice? Si basano gli standard di illuminazione sulla base della classificazione del lavoro visivo

secondo determinate caratteristiche quantitative.

Quando si utilizza il seguente stile?
P (colore: verde;)
B (colore: blu;)
Io (colore: arancione; )
B > I (colore: oliva;)

  1. P > I (colore: giallo;)
  2. Verde.
  3. Blu.
  4. Arancia.
  5. Oliva.

Giallo. ? </b></p> <ol><li><HEAD></li> <li><BODY></li> <li><HTML></li> <li><META></li> <li><!DOCTYPE></li> </ol><p><b>2. Quale elemento è l'elemento genitore del tag<!DOCTYPE>3. Per quale tag è l'elemento</b></p> <ol><li><HTML></li> <li><TITLE></li> <li><BODY></li> <li><HEAD></li> <li>agisce come genitore?</li> </ol><h2>Non per nessun tag.</h2> <p>Risposte</p> <p>1. Oliva.</p> <p>3. Non per nessun tag.</p> <p>I selettori figlio CSS sono selettori utilizzati per applicare stili agli elementi solo quando sono figli di altri elementi (genitori). Come i selettori discendenti, i selettori figli sono composti e sono costituiti da selettori semplici (classi, identificatori, ecc.).</p><p> <тег1> <тег2>...</тег2> <тег3><тег4>...</тег4></тег3> </тег1> </p><p>E ancora, se hai dimenticato cosa sono gli elementi figli, allora ricordiamolo guardando un esempio che ti è già familiare.<тег2>Un elemento si dice figlio di un altro elemento se è al primo livello di nidificazione al suo interno. Nel nostro esempio<тег3>E<тег1>sono figlie<тег4>, UN<тег3> .</p> <p>I selettori figli sono costituiti da due o più selettori semplici separati da un segno ">", dove prima viene specificato il genitore, poi il suo figlio, poi il figlio di quel figlio, ecc. Cioè, come nei selettori discendenti, viene specificato il percorso attraverso l'albero del documento. Gli stili verranno applicati solo agli elementi i cui selettori sono gli ultimi nell'elenco. Sintassi generale:</p> <p>selettore1 > selettore2 (</p> <p>Gli spazi su entrambi i lati del segno ">" possono essere posizionati o meno, a piacere.</p> <p>Esempio di utilizzo dei selettori figlio 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>Esempio 12.2. Selettori contestuali e figli

Paragrafo 1.

Paragrafo 2.

Risultato nel browser

Paragrafo 1.

Paragrafo 2.

Ci sono due cose a cui devi prestare attenzione in questo esempio. Ci sono tre elementi qui, ma solo due di essi hanno bordi, riempimento e margini. Perché? E il secondo punto. Solo il primo paragrafo ha il testo blu.

Internet Explorer 6.0 non supporta i selettori secondari, quindi se stai costruendo il tuo sito pensando a questo browser più vecchio, tienilo a mente.

Selettori figlio nelle tabelle HTML

Molti principianti (e talvolta non principianti) nella creazione di siti Web incontrano alcuni problemi quando utilizzano i selettori secondari nelle tabelle HTML. Per capire di cosa stiamo parlando, diamo un'occhiata a un tavolo così normale.

Cella 1.1Cella 1.2
Cella 2.1Cella 2.2

E ora la domanda. Cosa faresti se avessi bisogno di utilizzare selettori secondari per passare da un tag alle celle? Se decidi di scrivere in questo modo, allora è errato:

tabella > tr > td ( proprietà: valore; proprietà: valore; ...)

Riesci a indovinare perché è sbagliato? NO? Il fatto è che ti sei dimenticato di un altro elemento che, anche se non specificato esplicitamente, è comunque presente in modo invisibile in ogni tabella HTML. Semplicemente non ha i tag di apertura e chiusura richiesti, quindi spesso viene dimenticato. A proposito, sì, dentro Esercitazione sull'HTML Non l’abbiamo esaminata, perché in realtà la sua indicazione esplicita raramente serve. Bene, penso che tu abbia già indovinato quale sarà la voce corretta, ma te lo mostrerò comunque.

tabella > tcorpo > tr > td ( proprietà: valore; proprietà: valore; ...)

A proposito, non solo le tabelle hanno elementi con tag di apertura opzionali, ma esistono anche elementi simili. È solo che in pratica sorgono spesso "problemi di dimenticanza" con le tabelle, motivo per cui ho attirato la vostra attenzione su questo.

Compiti a casa.

  1. Imposta la pagina sulla dimensione del carattere Arial 0,9 em e uno sfondo.
  2. Scrivi diversi titoli e paragrafi sulla pagina, modifica la dimensione e il colore del testo del titolo come ritieni opportuno.
  3. Assicurati che i collegamenti direttamente nei paragrafi della pagina siano blu senza sottolineature. Ma allo stesso tempo, se i collegamenti sono inoltre incorniciati da qualsiasi tag, ad esempio in corsivo, dovrebbero essere visualizzati con una sottolineatura e in rosso. Ancora una volta, attiro la tua attenzione sul fatto che non è necessario specificare separatamente gli stili di collegamento con ciascun tag di inquadratura, renderlo universale. Come? Pensaci.
  4. Crea un piccolo menu sul lato destro della pagina e aggiustalo, per questo avrai bisogno di una proprietà e di un paio di altre proprietà che la accompagnino, lo capirai lì. Allo stesso tempo, lascia che il menu non solo rimanga al suo posto all'interno della finestra del browser, ma non si insinui anche nel contenuto della pagina durante lo scorrimento.

Penso che l'ultimo punto della lezione sarà il più difficile per te, ma non cercare di immergerti completamente subito nella padronanza del posizionamento. Fai solo i compiti. A proposito, questo elemento non funzionerà in Internet Explorer 6.0, poiché il vecchio non capisce il posizionamento fisso.

Il compito principale di questo selettore deriva dal suo nome ed è accedere a un elemento figlio. Visualizzato utilizzando un segno primitivo ">", che collega l'elemento figlio all'elemento genitore. Vale anche la pena notare che vengono utilizzati selettori semplici. Ad esempio, considera la seguente codifica:

Elemento > ul (imbottitura-top: 20px;)

Questa codifica significa che un elenco nidificato all'interno di un elemento avrà un riempimento di 20 pixel dal bordo superiore. La presenza dell'icona “>” in questa voce indica che la regola si applicherà solo alle liste del primo livello di nidificazione.

Un'analisi dettagliata di come funziona il selettore dell'elemento figlio

Un selettore di elemento figlio ha proprietà simili al concetto di selettore discendente. Tuttavia, esiste una caratteristica che mostra la differenza fondamentale tra queste operazioni. Sta nel fatto che l'influenza del selettore discendente si estende assolutamente a tutti gli elementi, mentre il selettore figlio subordina gli stili di posizione del primo livello di classificazioni.

L'esempio seguente ti aiuterà a valutare più chiaramente il lavoro dell'operatore di selezione figlio:

Div > p ( colore: #ff0000; /* rosso */ )

< div> Questa linea avrà il testo nero per impostazione predefinita.< span>Questa riga diventa rossa perché p è un tag figlio per div. < p>Ancora una volta vediamo lettere nere.< span>Qui vediamo anche simboli neri, poiché per questo span il genitore è il tag p.

Questo esempio conferma il funzionamento dell'operatore selettore figlio in base al grado di annidamento.

Limitazione per l'utilizzo dell'operatore di selezione figlio

Vale la pena notare che questa operazione è supportata da tutti i browser tranne il leggendario Internet Explorer 6. Penso che poche persone lo utilizzino questo navigatore, tuttavia, se ce ne sono di così unici, allora per loro c'è una via d'uscita dalla situazione, che sarà descritta in un articolo separato.

Perché viene utilizzato?

I programmatori si rivolgono ai selettori di elementi figlio quando devono assegnare il proprio stile unico agli elementi nidificati. Inoltre, l'utilizzo di questo selettore può ridurre la quantità di CSS, migliorando la leggibilità del documento. Come mostra la pratica, questa operazione viene spesso utilizzata durante la creazione di menu a discesa.

Il selettore dell'elemento figlio viene utilizzato anche per assegnare stili univoci agli elementi i cui genitori sono già noti. In altre parole:

Principale > intestazione ( /* la decorazione si applica solo all'intestazione principale */ }

Questo esempio è valido nei casi in cui il tag header viene utilizzato per evidenziare i titoli degli articoli. Nel nostro caso, impostiamo il design solo per l'intestazione principale e non influenziamo quelle secondarie. Questa tecnica consente inoltre di evitare l'utilizzo di identificatori non necessari, il che a sua volta alleggerisce il peso del file CSS e lo rende più leggibile.

Riassumendo

Pertanto, l'operatore dell'elemento figlio può essere utilizzato non solo per progettare menu a discesa, ma anche per ottimizzare leggermente la tua risorsa Internet per il lavoro dei robot di ricerca.

Gli elementi figlio sono elementi che si trovano direttamente all'interno di un elemento genitore. Notare le parole: direttamente all'interno.

Diamo un'occhiata a un esempio semplice codice html:

Elementi figli.

Il paragrafo e in esso grasso elemento, ed eccolo qui inclinato elemento.

Qui grasso E sottolineato e obliquo elementi.

Questo codice ha due paragrafi. Ci sono elementi in linea all'interno dei paragrafi , Un elemento si dice figlio di un altro elemento se è al primo livello di nidificazione al suo interno. Nel nostro esempio . Nel secondo paragrafo il tag nidificato in un tag .

Ora aggiungiamo gli stili CSS a questo codice html utilizzando i selettori secondari.

Sintassi per i selettori figlio:

Selettore 1 > Selettore 2 ( Proprietà: valore; )

Ecco il codice aggiornato:

Elementi figli.

Il paragrafo e in esso grasso elemento, ed eccolo qui inclinato elemento.

Qui grasso E sottolineato e obliquo elementi.

Quindi, ricordiamolo: un elemento figlio è un elemento nidificato direttamente nel genitore. Cioè, un elemento figlio è un discendente di primo livello. Prestiamo attenzione al tag , nel primo paragrafo è annidato in un tag

E nel secondo è annidato in un tag , sebbene sia anch'esso figlio del tag

Pertanto, nel secondo paragrafo, la regola CSS per il selettore figlio p>i ( color : blue ; ) non funzionerà: il testo in corsivo del secondo paragrafo non verrà visualizzato in blu.

Figura 1. Esempio n. 1 al lavoro.

Vai all'elemento html il secondo paragrafo può essere utilizzato utilizzando la regola CSS: p>u>i ( color : blue ; ).

Usiamo questa regola per impostare il testo in corsivo del secondo paragrafo in giallo.

Elementi figli.

Il paragrafo e in esso grasso elemento, ed eccolo qui inclinato elemento.

Qui grasso E sottolineato e obliquo elementi.

Questo stile funzionerà e il testo in corsivo nel secondo paragrafo verrà visualizzato in giallo.

Figura 2. Esempio n. 2 in azione.

Esempio più complesso

Abbiamo il codice html:

Elementi figli.

Per impostazione predefinita viene interpretato in questo modo:

Compito: quando Aiuto CSS trasforma questo elenco in un menu orizzontale.


Figura 3. Obiettivo del cambiamento.

Ecco una soluzione a questo problema utilizzando i selettori secondari:

Elementi figli.

Per una migliore comprensione di questo esempio, continua a leggere.