dobre uwagi już tutaj przedstawione, ale chociaż istnieje wiele informacji o tym, jak renderowanie marginesów jest wykonywane przez przeglądarkę, dlaczego nie ma jeszcze pełnej odpowiedzi:
„Dlaczego margin-top: -8px to nie to samo co margin-bottom: 8px?”
moglibyśmy również zapytać:
Dlaczego dodatni dolny margines nie „podbija” poprzedzających elementów, podczas gdy dodatni górny margines „nie podnosi” kolejnych elementów?
więc widzimy, że istnieje różnica w renderowaniu marginesów w zależności od strony, po której są one stosowane - marginesy górne (i lewe) różnią się od marginesów dolnych (i prawych).
rzeczy stają się jaśniejsze, gdy przyjrzymy się (uproszczonemu), jak style są stosowane przez przeglądarkę: elementy są renderowane z góry na dół w rzutni, zaczynając od lewego górnego rogu (na razie trzymajmy się renderowania pionowego, pamiętając, że poziomy traktuje się tak samo).
rozważ następujący html:
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
Analogicznie do ich pozycji w kodzie, te trzy pola pojawiają się w przeglądarce w stosie „od góry do dołu” ( mówiąc prostym, nie będziemy tutaj rozważać order
właściwości modułu css3 „flex-box” ). tak więc za każdym razem, gdy style są stosowane do pola 3, pozycje poprzedzającego elementu (dla pola 1 i 2) zostały już określone i nie powinny być już zmieniane ze względu na szybkość renderowania.
teraz wyobraź sobie górny margines -10 pikseli dla ramki 3. zamiast przesuwać wszystkie poprzednie elementy w górę, aby zebrać trochę miejsca, przeglądarka po prostu przesunie pole 3 w górę, więc jest renderowane na górze (lub pod spodem, w zależności od indeksu Z ) wszelkie poprzednie elementy. nawet jeśli wydajność nie była problemem, przesunięcie wszystkich elementów w górę mogłoby oznaczać przesunięcie ich poza obszar wyświetlania, a zatem bieżąca pozycja przewijania musiałaby zostać zmieniona, aby wszystko było ponownie widoczne.
to samo dotyczy dolnego marginesu dla pola 3, zarówno negatywnego, jak i pozytywnego: zamiast wpływać na już ocenione elementy, określa się tylko nowy „punkt wyjścia” dla kolejnych elementów. w ten sposób ustawienie dodatniego dolnego marginesu spycha w dół następujące elementy; negatywny spowoduje ich wzrost.
onset
ioffset
. To prawda, że tak wiele osób zawsze używa słowaoffset
( negatywne ), kiedy ma na myślionset
( pozytywne ). Ta wiadomość ulegnie samozniszczeniu, jeśli zaktualizujesz swoją odpowiedź. Twoje zdrowie!