私の知る限り、視覚的な影響のないマージンの折りたたみを無効にするための巧妙なトリックの 1 つは、親のパディングを次のように設定すること0.05pxです。
.parentClass {
padding: 0.05px;
}
パディングは 0 ではなくなったため、折りたたみは発生しなくなりましたが、同時にパディングが十分に小さいため、視覚的には 0 に切り捨てられます。
他のパディングが必要な場合は、マージンの崩壊が望ましくない「方向」にのみパディングを適用しますpadding-top: 0.05px;。
作業例:
.noCollapse {
padding: 0.05px;
}
.parent {
background-color: red;
width: 150px;
}
.children {
margin-top: 50px;
background-color: lime;
width: 100px;
height: 100px;
}
<h3>Border collapsing</h3>
<div class="parent">
<div class="children">
</div>
</div>
<h3>No border collapsing</h3>
<div class="parent noCollapse">
<div class="children">
</div>
</div>
編集:値を から0.1に変更しました0.05。この小さなテストから、Firefox は0.1pxパディングを考慮しているようです。しかし、0.05pxうまくいくようです。