1) In Ihrem Beispiel verwenden, erweitert der Container das Kind div
richtig zu passen. Die Höhe des Kindes ist 100px plus das Zweifache der Grenze von 1px, insgesamt 102px. Dann ist die Höhe des Containers genau 102px, wie die Entwickler-Tools in jedem Browser Ihnen sagen können.
Die Höhe des Inhalts beträgt 102px, daher ist die innere Höhe des Containers 102px. Dies ist per definitionem "erweitert um den Inhalt anzupassen".
2) Jetzt setzen Sie position: relative
für Ihr Kind div. Das folgende Zitat aus sollte eine vollständige Erklärung zu dem geben, was in Ihrem Beispiel passiert.
Relative Positionierung:
Dieses Schlüsselwort alle Elemente legt, als ob das Element wurden nicht positioniert, und dann die Position des Elements anzupassen, ohne Änderung Layout (und damit eine Lücke für das Element verlassen, wo es hätte gewesen wäre es nicht positioniert worden). Die Auswirkung von position: relativ auf Tabelle - * - Gruppe, Tabellenzeile, Tabellenspalte, Tabellenzelle und Tabellenbeschriftung Elemente ist nicht definiert.
3) Natürlich können Sie diesen Effekt loszuwerden, indem der relativen Positionierung loszuwerden, und statt mit margin
einfach. In Bezug auf Ihren Kommentar, nein, top
, right
, bottom
und left
sollte absolut nicht funktionieren. Sie sind für eine ganz andere Sache gedacht, für was das Zitat oben erklärt.
Danke, ich verstehe, warum Marge funktioniert (wie es als Teil des Elements selbst betrachtet wird), aber sollte das TOP-Attribut auch nicht funktionieren? Was passiert, wenn Sie stattdessen LINKS, OBEN, RECHTS und UNTEN verwenden möchten? – Kadjia
@Kadjia Sie bewegen das Element mit 'top', während Sie mit' margin-top' das Element verschieben. –