2013-08-03 18 views
14

Probabilmente la mia conoscenza di CSS è limitato, ma non uderstand questo:Paragrafo ignora stile a causa di un altro paragrafo nidificato

<p style="color: green"> 
    <p style="color: red">This is red</p> 
    This should be green. But it's not. 
</p> 

La seconda linea renderà in nero ignorando il "colore: verde". Perché? L'ho provato in Chrome 28 e Firefox 22.

+3

Inoltre, è possibile ottenere la radice del problema se il risultato del browser è stato verificato. Gli strumenti di ispezione sono ora disponibili per tutti i principali browser. – Cthulhu

risposta

16

Non è possibile nidificare i paragrafi.

Il paragrafo è un elemento di chiusura automatica, lo </p> è facoltativo - qualsiasi elemento di blocco chiuderà automaticamente l'ultimo aperto <p>.

Questo è quello che sta succedendo:

<p style="color: green"> 
</p> <!-- auto-closed paragraph --> 

<p style="color: red"> 
    This is red 
</p> 

This should be green. But it's not. 

</p> <!-- here you have syntax error --> 
+0

Grazie! Ho provato ad annidare un div all'interno del paragrafo con lo stesso effetto. Sembra che il paragrafo gests sia chiuso non solo con un paragrafo ma con qualsiasi elemento di blocco. Ho anche provato a nidificare un h1 in un h1 e il risultato era lo stesso dei paragrafi. –

+1

Sì, ho provato anche io e sembra che - qualsiasi ** elemento di blocco ** chiuda un paragrafo. Lasciami correggere la risposta. – MightyPork

5

non si può annidare <p> 's. Il tag di chiusura di un paragrafo può essere omesso se seguito da un altro paragrafo. Ciò significa che nel tuo codice, il primo paragrafo non contiene testo, il secondo contiene "Questo è rosso". Poi c'è del testo "Questo dovrebbe essere verde, ma non lo è." che non ha stile e un tag di chiusura </p>, che non ha tag di apertura.

controllo: http://www.w3.org/TR/html-markup/p.html

1

paragrafo non può essere nidificato all'interno di un altro elemento di paragrafo o blocco.

Quando il codice viene eseguito il rendering nel browser viene reso come come qui di seguito

<p style="color: green"></p> 
    <p style="color: red"> 
     This is red 
    </p> 
    This should be green. But it's not. 
    <p></p> 

Così si può vedere, non v'è alcun wrapper per l'ultima frase di conseguenza viene applicata l'impostazione predefinita css colore cioè nero su quello.

Problemi correlati