Hier wurden bereits gute Punkte gemacht, aber obwohl es viele Informationen darüber gibt, wie das Rendern von Rändern durch den Browser erreicht wird, das Warum noch nicht ganz beantwortet:
"Warum ist Rand oben: -8px nicht dasselbe wie Rand unten: 8px?"
was wir auch fragen könnten ist:
Warum "stößt" ein positiver unterer Rand vorhergehende Elemente nicht an, während ein positiver oberer Rand nachfolgende Elemente "anstößt"?
Wir sehen also, dass es einen Unterschied in der Darstellung von Rändern gibt, abhängig von der Seite, auf die sie angewendet werden - die oberen (und linken) Ränder unterscheiden sich von den unteren (und rechten) Rändern.
Die Dinge werden klarer, wenn man sich (vereinfacht) ansieht, wie Stile vom Browser angewendet werden: Elemente werden im Ansichtsfenster von oben nach unten gerendert, beginnend in der oberen linken Ecke (bleiben wir zunächst beim vertikalen Rendern, wobei wir dies berücksichtigen die horizontale wird gleich behandelt).
Betrachten Sie das folgende HTML:
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
Analog zu ihrer Position im Code erscheinen diese drei Felder im Browser von oben nach unten gestapelt (um die Dinge einfach zu halten, werden wir hier die order
Eigenschaft des CSS3-Moduls "Flex-Box" nicht berücksichtigen ). Wenn Stile auf Feld 3 angewendet werden, wurden die Positionen der vorhergehenden Elemente (für Feld 1 und 2) bereits festgelegt und sollten aus Gründen der Rendergeschwindigkeit nicht mehr geändert werden.
Stellen Sie sich nun einen oberen Rand von -10 Pixel für Feld 3 vor. Anstatt alle vorhergehenden Elemente nach oben zu verschieben, um Platz zu schaffen, schiebt der Browser Feld 3 einfach nach oben, sodass es je nach Z-Index über (oder darunter) gerendert wird ) alle vorhergehenden Elemente. Selbst wenn die Leistung kein Problem wäre, könnte das Verschieben aller Elemente bedeuten, dass sie aus dem Ansichtsfenster verschoben werden. Daher müsste die aktuelle Bildlaufposition geändert werden, damit alles wieder sichtbar ist.
Gleiches gilt für einen unteren Rand für Feld 3, sowohl negativ als auch positiv: Anstatt bereits bewertete Elemente zu beeinflussen, wird nur ein neuer „Ausgangspunkt“ für kommende Elemente festgelegt. Wenn Sie also einen positiven unteren Rand festlegen, werden die folgenden Elemente nach unten gedrückt. ein negativer wird sie nach oben drücken.
onset
und verbessert werdenoffset
. Es ist wahr, dass so viele Leute immer das Wortoffset
( negativ ) verwenden, wenn sieonset
( positiv ) meinen . Diese Nachricht zerstört sich selbst, wenn Sie Ihre Antwort aktualisieren. Prost!