子DIV設(shè)置margin-top影響父DIV位置的解決辦法

2015-07-23 12:42:22來源:威易網(wǎng)作者:icech

在設(shè)置子DIV的margin-top時(shí)候,如果與父DIV之間無任何元素的間隔,那么就會(huì)讓父DIV的位置收到影響。如圖:

在設(shè)置子DIV的margin-top時(shí)候,如果與父DIV之間無任何元素的間隔,那么就會(huì)讓父DIV的位置收到影響。如圖:

\

代碼如下:
<style>
.zb-tips{ margin-top: 30%; }
</style>
<div class="zb-container">
    <div class="ui-tips ui-tips-warn zb-tips">
        <i></i><span>簽到失!請(qǐng)下載并安裝“xxx”APP掃描二維碼</span>
    </div>
</div>

原因是:所有毗鄰的兩個(gè)或更多盒元素的margin將會(huì)合并為一個(gè)margin共享之。毗鄰的定義為:同級(jí)或者嵌套的盒元素,并且它們之間沒有非空內(nèi)容、Padding或Border分隔。這個(gè)問題的避免方法很多,只要破壞它出現(xiàn)的條件就行。給 Outer Div 加上 padding/border,或者給 Outer Div / Inner Div 設(shè)置為 float/position:absolute(CSS2.1規(guī)定浮動(dòng)元素和絕對(duì)定位元素不參與Margin折疊)。

如何解決這個(gè)問題呢?方法有多個(gè):

方法1:在父DIV的css加上“overflow:hidden;”。這種方法是目前來看最完美的解決辦法。

方法2:在父DIV的css加上“border:1px solid transparent;”。

方法3:在父DIV的css加上float或者position:absolute。

方法4:在父DIV的css加上padding-top來代替margin實(shí)現(xiàn)效果。

關(guān)鍵詞:css