1. 程式人生 > >CSS margin合並

CSS margin合並

lin 距離 org docs 沒有 eve ima 頂部 size

1.外邊距合並

頂部外邊距和底部外邊距有時被組合(折疊)為單個外邊距,其大小是組合到其中的最大外邊距

2. 發生外邊距合並的三種基本情況

  • 相鄰的兄弟姐妹元素

<div id="margin_parent">
<div><b>父margin-top: 80px,子margin-top: 50px,則最後margin-top為80px</b></div>
</div>

CSS

#margin_parent{
    width: 200px;
    height: 200px;
    background-color: green;
    margin-top:80px;
}
#margin_parent div{
    width: 200px;
    height: 200px;
    background-color: yellow;
    margin-top:50px;
    opacity: 0.5;
}
技術分享
  • 塊級父元素與其第一個/最後一個子元素

margin-top:塊級父元素和其第一個子元素會發生上外邊距合並

margin-bottom:塊級父元素與它的最後一個子元素會發生下邊距合並,要求:父元素沒有border、padding、inline content、height、min-height、max-height等

<div id="margin_parent">
<div><b>父margin-top: 80px,子margin-top: 50px,則最後margin-top為80px</b></div>
</
div>

CSS

#margin_parent{
    width: 200px;
    height: 200px;
    background-color: green;
    margin-top:80px;
}
#margin_parent div{
    width: 200px;
    height: 200px;
    background-color: yellow;
    margin-top:50px;
    opacity: 0.5;
}
技術分享
  • 空塊元素

如果存在一個空的塊級元素,其border、padding、inline content、height、min-height都不存在。那麽此時它的上下邊距中間將沒有任何阻隔,此時它的上下外邊距將會合並

<p style="margin-bottom: 0px;background-color:green;">這個段落的和下面段落的距離將為50px</p>
<div style="margin-top: 50px; margin-bottom: 50px;"></div>
<p style="margin-top: 0px;background-color:green;">中間div的設置margin-top: 50px; margin-bottom: 50px;<br/>
兩個會折疊成一個50px</p>
技術分享

參考

https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Box_Model/Mastering_margin_collapsing

CSS margin合並