2012-07-26 9 views
25

Mi sono imbattuto in un caso in cui ho bisogno del margine di un bambino per espandere un contenitore genitore. Ho scoperto che lo spazio esterno al genitore è allocato, ma il genitore stesso non è espanso. Ho poi scoperto che aggiungendo "overflow: hidden" al genitore potevo risolvere il problema.Perché i margini verticali figlio non espandono il contenitore principale?

Qualcuno può far luce sul perché questo è il caso?

UPDATE:

Ho trovato che l'aggiunta di qualsiasi imbottitura o il valore di confine al genitore risolve anche questo.

Updated Example

+1

+1 Buona domanda. Ho usato questa soluzione per anni .. tutto questo tempo senza conoscere la ragione .. Vorrebbe sapere anche questo .. – techfoobar

+0

È questa l'unica correzione? È fastidioso affrontare le conseguenze di "overflow: hidden;" – wilsonpage

+1

Una soluzione è dare "padding: 10px' al genitore invece di dare un margine al bambino. – techfoobar

risposta

15

La risposta al "perché" è descritto bene e succintamente here. Ci sono alcune proprietà che stabiliscono un "block formatting context". Vale a dire:

galleggianti, assolutamente [e fisso] elementi posizionati, contenitori a blocchi (come linea-blocchi, tovaglie, celle e tabella sottotitoli) che non sono bloccano scatole e scatole blocchi con 'overflow 'diverso da' visibile '(eccetto quando tale valore è stato propagato al viewport) stabilisce nuovi contesti di formattazione del blocco per il loro contenuto.

è questo cambiamento di contesto di formattazione a blocchi che è il motivo per cui tali soluzioni come sopra nell'opera commenti per come margin (e nel caso di una precedente float, padding di seguire elementi di afflusso) opera .

+2

L'articolo collegato a non è più disponibile dal dominio colinaarts.com ma è disponibile [qui] (https://web.archive.org/web/20150423190902/http://colinaarts.com/articles/the-magic- di-trabocco-nascosto /). Semplice e giusto al punto. Grazie! – coderfin

Problemi correlati