Rumah  >  Artikel  >  hujung hadapan web  >  Mengapa Elemen Induk Tidak Sentiasa Mengandungi Margin Elemen Kanak-Kanak Secara Konsisten?

Mengapa Elemen Induk Tidak Sentiasa Mengandungi Margin Elemen Kanak-Kanak Secara Konsisten?

Linda Hamilton
Linda Hamiltonasal
2024-11-02 23:13:30705semak imbas

Why Do Parent Elements Not Always Contain Child Element Margins Consistently?

Pengandungan Margin Tidak Konsisten Elemen Induk

Apabila elemen dengan jidar diletakkan di dalam elemen lain, elemen induk tidak sentiasa membalut atau mengandungi margin itu. Ketidakkonsistenan ini kelihatan berlawanan dengan intuitif, terutamanya jika dibandingkan dengan gelagat sifat lain seperti jidar, kedudukan, paparan dan limpahan.

Jing Bertindih dan Runtuh

Secara intuitif, seseorang mungkin andaikan bahawa keruntuhan margin, seperti yang diterangkan dalam spesifikasi CSS, mempengaruhi tingkah laku ini. Walau bagaimanapun, walaupun tiada margin bertindih dan gelagat yang konsisten merentas penyemak imbas, punca ketidakkonsistenan ini terletak di tempat lain.

Logik Di Sebalik Pengekalan Margin

Spesifikasi CSS sebenarnya mentakrifkan tingkah laku ini, walaupun dengan beberapa percanggahan. Spesifikasi tersebut membincangkan kedua-dua "margin percuma" (margin yang melangkaui elemen induk) dan "margin runtuh" ​​(margin bersebelahan yang bertindih), tanpa membezakan dengan jelas syarat di mana setiap satu terpakai.

Demo dan Kesimpulan

Demo berikut menggambarkan tingkah laku tidak konsisten ini:

<code class="html"><div class="block">
  <h2 style="margin: 80px;">Is the margin contained (block)?</h2>
</div>
<div class="inline-block">
  <h2 style="margin: 80px;">Is the margin contained (inline-block)?</h2>
</div>
<div class="position-absolute">
  <h2 style="margin: 80px;">Is the margin contained (position-absolute)?</h2>
</div>
<div class="overflow-auto">
  <h2 style="margin: 80px;">Is the margin contained (overflow-auto)?</h2>
</div>
<div class="border">
  <h2 style="margin: 80px;">Is the margin contained (border)?</h2>
</div></code>

Ketidakkonsistenan jelas apabila membandingkan elemen "blok" (dengan kelakuan margin lalainya) dengan semua yang lain elemen. Nampaknya segala-galanya kecuali gelagat lalai div biasa menganggap bahawa margin terkandung oleh induk.

Tingkah laku berbelit-belit ini berpunca daripada kekaburan dalam spesifikasi CSS berkenaan keruntuhan margin dan margin bebas. Malangnya, dokumentasi tidak memberikan penjelasan yang jelas tentang cara konsep ini berinteraksi dengan sifat elemen yang berbeza seperti sempadan, kedudukan dan limpahan.

Atas ialah kandungan terperinci Mengapa Elemen Induk Tidak Sentiasa Mengandungi Margin Elemen Kanak-Kanak Secara Konsisten?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn