Il CSS 2.1 spec dice
Le dimensioni dell'area di contenuto di una scatola - la larghezza del contenuto e altezza del contenuto - dipende da diversi fattori: se l'elemento che genera la casella ha la proprietà 'width' o 'height' impostata, se la casella contiene testo o altre caselle, indipendentemente dal fatto che la casella sia una tabella, ecc. Le larghezze e le altezze del riquadro sono illustrate nel capitolo sui dettagli del modello di formattazione visual .
I <a>
elemento predefinito è il valore visualizzato inline
. I suoi contenuti partecipano al layout in modo che sia un elemento non-replaced
.
Per l'altezza, le specifiche dice:
10.6.1 Inline, non-replaced elements
La proprietà 'height' non si applica. L'altezza dell'area di contenuto dovrebbe essere basata sul carattere, ma questa specifica non specifica come.
Quindi 18px
è stato ricavato da una singola riga di testo, ricavata dalle metriche dei caratteri. Né il contenuto dell'immagine più grande, né la dimensione del blocco contenitore svolgono alcuna parte.
Per la larghezza, le specifiche dice
10.3.1 Inline, non-replaced elements
La proprietà 'width' non si applica. Un valore calcolato di 'auto' per 'margin-left' o 'margin-right' diventa un valore usato di '0'.
in altre parole, la larghezza è determinata dal contenuto dell'elemento <a>
, dai bordi, dai bordi e dai margini.
Per la prima <a>
elemento che è 114px (contenuto - immagine più uno spazio) + 20px (margine sinistro) + 2x5px (bordo sinistro e destro) = 144px
Per la seconda <a>
elemento che è 280px (contenuti - immagine) + 20px (margine sinistro) + 2x5px (bordo sinistro e destro) = 310px
Basta tenere conto degli spazi. Gli elementi vengono disposti in una casella di riga in un contesto inline, pertanto gli spazi all'inizio del primo elemento <a>
e alla fine del secondo elemento <a>
vengono eliminati. Gli spazi alla fine del primo elemento <a>
e l'inizio del secondo elemento <a>
vengono compressi in uno spazio. Quando gli spazi sono compressi, è sempre il primo spazio che rimane, che in questo caso è quello alla fine del primo elemento <a>
, ecco perché uno spazio partecipa alla larghezza del primo elemento <a>
ma non nella larghezza del secondo uno.
@Downvoter ti dispiacerebbe dare una spiegazione? – shubendrak
Possibile duplicato [Eredita altezza di un nodo figlio (IMG all'interno di A)] (http://stackoverflow.com/questions/8348381/inheriting-height-of-a-child-node-img-inside-a). I tag di ancoraggio – Vucko
sono elementi in linea. Gli elementi in linea non riempiono la larghezza del loro contenitore, ma riempiono solo la larghezza del contenuto che contengono. E 'così semplice. Pensaci in questo modo, se fosse un elemento di blocco, non potresti inserire un link in una singola parola in una frase. –