poin bagus sudah dibuat di sini, tetapi meskipun ada banyak informasi tentang bagaimana rendering margin dilakukan oleh browser, alasannya belum cukup dijawab:
"Mengapa margin-top: -8px tidak sama dengan margin-bottom: 8px?"
yang juga bisa kami tanyakan adalah:
Mengapa margin bawah positif tidak 'menaikkan' elemen sebelumnya, sedangkan margin atas positif 'menabrak' elemen berikut?
jadi apa yang kita lihat adalah bahwa ada perbedaan dalam rendering margin tergantung pada sisi penerapannya - margin atas (dan kiri) berbeda dari margin bawah (dan kanan).
hal-hal menjadi lebih jelas ketika melihat (disederhanakan) bagaimana gaya diterapkan oleh browser: elemen dirender dari atas ke bawah di viewport, dimulai dari pojok kiri atas (mari tetap dengan rendering vertikal untuk saat ini, dengan mengingat bahwa yang horizontal diperlakukan sama).
perhatikan html berikut:
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
analog dengan posisi mereka dalam kode, ketiga kotak ini tampak bertumpuk 'top-down' di browser ( menjaga hal-hal sederhana, kami tidak akan menganggap di sini sebagai order
properti dari modul 'flex-box' css3 ). jadi, setiap kali gaya diterapkan ke kotak 3, posisi elemen sebelumnya (untuk kotak 1 dan 2) telah ditentukan, dan tidak boleh diubah lagi demi kecepatan rendering.
sekarang, bayangkan margin atas -10px untuk kotak 3. alih-alih menggeser semua elemen sebelumnya untuk mengumpulkan beberapa ruang, browser hanya akan mendorong kotak 3 ke atas, jadi itu ditampilkan di atas (atau di bawah, tergantung pada z-index ) elemen sebelumnya. bahkan jika kinerja bukan menjadi masalah, memindahkan semua elemen ke atas dapat berarti memindahkannya dari viewport, sehingga posisi pengguliran saat ini harus diubah agar semuanya terlihat lagi.
hal yang sama berlaku untuk margin bawah untuk kotak 3, baik negatif maupun positif: alih-alih memengaruhi elemen yang sudah dievaluasi, hanya 'titik awal' baru untuk elemen mendatang yang ditentukan. sehingga menetapkan margin bawah positif akan menekan elemen berikut ; yang negatif akan mendorong mereka.
onset
danoffset
. Memang benar begitu banyak orang yang selalu menggunakan kataoffset
( negatif ) saat diartikanonset
( positif ). Pesan ini akan hancur dengan sendirinya jika Anda memperbarui jawaban Anda. Bersulang!