Rumah >hujung hadapan web >tutorial css >Margin Meruntuhkan dalam CSS: Panduan Pemula
Tiada yang lebih mengecewakan daripada menerapkan gaya dan tidak berfungsi seperti yang diharapkan. Margin Runtuh ialah satu fenomena yang menyebabkan hasil penggayaan yang tidak dijangka. Oleh itu, apakah margin runtuh dan bagaimana ia mempengaruhi margin dalam CSS?
Jing yang runtuh berpunca daripada jidar sifat CSS, yang mengawal jarak di luar elemen. Seperti namanya, jidar runtuh berlaku apabila jidar unsur bersebelahan bergabung atau 'runtuh' menjadi satu, bukannya menjumlahkan. Ini biasanya berlaku antara unsur adik beradik atau antara unsur ibu bapa dan anak. Contohnya, jika dua elemen adik-beradik mempunyai jidar—satu dengan jidar 20px bawah dan satu lagi dengan jidar atas 30px—anda mungkin menjangkakan jumlah jidar ialah 50px. Walau bagaimanapun, disebabkan jidar runtuh, hanya jidar 30px yang lebih besar akan digunakan dan jidar 20px yang lebih kecil akan diruntuhkan.
.element1 { margin-bottom: 20px; } .element2 { margin-top: 30px; }
Selain itu, dalam kes di mana unsur induk tidak mempunyai pelapik atau jidar, dan unsur anaknya mempunyai jidar atas, jidar mungkin "runtuh" melebihi induk, sekali gus menjejaskan peletakan ibu bapa.
.parent { margin-top: 0; } .child { margin-top: 20px; }
Bidar atas 20px daripada .child mungkin runtuh di luar .parent, menurunkan keseluruhan induk sebanyak 20px.
Ini boleh mengelirukan pembangun noob (saya tidak pernah tahu mengenainya sehingga baru-baru ini), kerana jarak yang terhasil mungkin tidak sepadan dengan jangkaan mereka.
.parent { padding-top: 1px; /* or border-top: 1px solid transparent; */ }
.parent { overflow: hidden; }
.parent { display: flex; /* Flexbox layout */ flex-direction: column; /* Stack children vertically */ border: 1px solid #000; /* Just for visibility */ } .child1, .child2 { margin: 20px 0; /* Vertical margins that won't collapse */ background-color: lightblue; }
.parent { display: grid; /* Grid layout */ grid-template-rows: auto auto; /* Define two rows */ border: 1px solid #000; /* Just for visibility */ } .child1, .child2 { margin: 20px 0; /* Vertical margins */ background-color: lightgreen; }
.parent { border: 1px solid #000; /* Just for visibility */ } .child1, .child2 { float: left; /* Prevents margin collapsing */ width: 100%; /* Full width */ margin: 20px 0; /* Vertical margins */ background-color: lightcoral; }
.parent { border: 1px solid #000; /* Just for visibility */ } .child1, .child2 { display: inline-block; /* Prevents margin collapsing */ width: 100%; /* Full width */ margin: 20px 0; /* Vertical margins */ background-color: lightyellow; }
Memahami keruntuhan jidar boleh menyumbang dengan ketara kepada jarak yang konsisten dan dijangka dalam reka letak web anda, terutamanya apabila bekerja dengan elemen peringkat blok. Perlu diingat bahawa elemen sebaris seperti , , , dsb. secara amnya tidak terjejas oleh keruntuhan jidar disebabkan oleh kelakuannya yang berbeza dalam menjana jidar menegak berbanding elemen peringkat blok. Margin runtuh terutamanya menimbulkan cabaran dengan elemen peringkat blok, seperti , Atas ialah kandungan terperinci Margin Meruntuhkan dalam CSS: Panduan Pemula. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!, dan lain-lain, kerana ia mungkin mempunyai jidar menegak yang berinteraksi antara satu sama lain.
Rujukan