margin-top塌陷問題的現(xiàn)象與解決的具體方法

什么是margin-top塌陷
margin-top塌陷是在CSS的盒子模型中出現(xiàn)的一種現(xiàn)象,描述的是當(dāng)父元素包裹著一個子元素的時候,當(dāng)給子元素設(shè)置margin-top屬性時,此時只是想讓子元素的邊框距離父元素邊框有一段距離,而卻出現(xiàn)了父元素的頂端距離body這個邊框出現(xiàn)了位移,這就是margin-top塌陷的現(xiàn)象。
在未給子元素(綠色部分)添加margin-top屬性的時候,網(wǎng)頁如下圖顯示:
但是當(dāng)給子元素加上margin-top屬性的時候網(wǎng)頁顯示就變成了如下圖所示:
你會發(fā)現(xiàn),子元素的邊界與父元素(黃色部分)的邊界距離并沒有增大,反而是父元素的上邊界與瀏覽器上邊界的距離增大了,也就是父元素帶著子元素一起下移了一段距離,經(jīng)過檢查,這段距離也正好等于我們給子元素設(shè)置的margin-top的屬性值,這就是margin-top塌陷的現(xiàn)象。
怎么解決margin-top塌陷
對于margin-top的塌陷問題,可以從以下幾點(diǎn)去解決,親測有效:
1.給父元素增加邊框
為了不影響原先的圖像效果,可以將邊框顏色設(shè)置為白色(與瀏覽器背景顏色一致)
2.溢出隱藏
在父元素的style里面添加overflow:hidden;
3.利用浮動
給父元素的style添加浮動,但是這種方法不推薦使用。因?yàn)闀砦粗腻e誤
4.給父元素添加position:fixed;
這里用到了定位的知識,將父元素顯示在固定位置,就不會受margin-top塌陷的問題影響
5.給父元素設(shè)置display:table;
6.使用偽元素
偽元素之所以被稱為偽元素,就是因?yàn)樗麄儾皇钦嬲捻撁嬖?,html沒有與之對應(yīng)的元素,但是其用法和表現(xiàn)行為和真正的元素一樣,所以被成為偽元素。
.clearfix::before{ content: ”; display: table; }
.clearfix 是給父元素增加的另外一個類名,這是我們推薦的解決辦法,既能解決margin-top塌陷問題,又不會出現(xiàn)其他附加的未知錯誤。
確定了解決方案以后,現(xiàn)在來看看最終的結(jié)果,如下圖:
可以看見,現(xiàn)在的位置是子元素相對于父元素在移動,而不會對父元素的位置造成什么影響了。
下面附上調(diào)試代碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>10-margin-top塌陷</title> <style> .clearfix::before{ content: ''; display: table; } .box{ width: 200px; height: 200px; background-color: gold; margin:0px auto; } .con{ width: 100px; height: 50px; background-color: green; margin-top: 100px; } </style> </head> <body> <div class="box clearfix"> <div class="con"></div> </div> </body> </html>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
css中子元素設(shè)置margin-top為什么影響了父元素
這篇文章主要介紹了css中子元素設(shè)置margin-top為什么影響了父元素,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著2019-05-22CSS 同級元素position:fixed和margin-top共同使用的問題
這篇文章主要介紹了CSS 同級元素position:fixed和margin-top共同使用的問題的相關(guān)資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-13margin-top負(fù)值解決label 文字與input 垂直居中對齊問題
label 文字與input 垂直居中對齊不容易調(diào)好,不過使用margin-top負(fù)值可解決label文字與input垂直居中對齊問題2014-05-14父元素與子元素之間的margin-top問題(css hack)
給子元素盒子一個垂直外邊距margin-top,父元素盒子也會往下走margin-top的值,遇到此問題的朋友可以參考下本文或許會有意想不到的收獲2013-03-19子元素margin-top導(dǎo)致父元素移動的問題解決
這篇文章主要介紹了子元素margin-top導(dǎo)致父元素移動的問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編2021-01-26