Ich suche nach einer Lösung, um ein Kind div
in das der Eltern zu integrieren width
.
Die meisten Lösungen, die ich hier gesehen habe, sind nicht browserübergreifend kompatibel (z. B. display: table-cell;
wird im IE nicht unterstützt <=8
).
Ich suche nach einer Lösung, um ein Kind div
in das der Eltern zu integrieren width
.
Die meisten Lösungen, die ich hier gesehen habe, sind nicht browserübergreifend kompatibel (z. B. display: table-cell;
wird im IE nicht unterstützt <=8
).
Antworten:
Die Lösung besteht darin, einfach nicht zu deklarieren width: 100%
.
Die Standardeinstellung ist width: auto
, dass für Elemente auf Blockebene (z. B. div
) der ohnehin verfügbare "volle Speicherplatz" belegt wird (anders als dies der width: 100%
Fall ist).
Siehe: http://jsfiddle.net/U7PhY/2/
Nur für den Fall, dass es aus meiner Antwort noch nicht klar ist: Setzen Sie width
das Kind einfach nicht auf div
.
Sie könnten stattdessen interessiert seinbox-sizing: border-box
.
width
Eigenschaft festlegt und ein Problem verursacht. In diesem Fall explizit width: auto
für das untergeordnete div festlegen .
Sie können die box-sizing
CSS-Eigenschaft verwenden, sie ist Crossbrowser (dh8 + und alle echten Browser) und eine ziemlich gute Lösung für solche Fälle:
#childDiv{
box-sizing: border-box;
width: 100%; //or any percentage width you want
padding: 50px;
}
In Ihrem Bild platzieren Sie die Polsterung außerhalb des Kindes. Das ist nicht der Fall. Das Auffüllen erhöht die Breite eines Elements. Wenn Sie also das Auffüllen hinzufügen und ihm eine Breite von 100% geben, hat es eine Breite von 100% + Auffüllen. Um das zu erreichen, was Sie möchten, müssen Sie entweder dem übergeordneten Div einen Abstand hinzufügen oder dem inneren Div einen Rand hinzufügen. Da Divs Elemente auf Blockebene sind, werden sie automatisch auf die Breite ihres übergeordneten Elements erweitert.
Wenn Sie diesen Auffüllraum nutzen möchten, dann ist hier etwas:
Alle Farben sind Hintergrundfarben.
Sie brauchen nicht einmal width: 100%
in Ihrem Kind div: