日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Css 盒子塌陷

發布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Css 盒子塌陷 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.盒子塌陷的原因

????????在構建頁面的時候需要使用到一些盒子模型來完成我們對頁面的排版,并且盒子套盒子的情況也是非常常見的,正常情況下如果父盒子沒有設置高度,子盒子會撐開父盒子使父盒子達到子盒子的高度,但是如果子盒子使用了浮動,子盒子就會脫離了文檔流,引起盒子塌陷,絕對定位和固定定位也會引起盒子塌陷。

? ? ? ? 首先,設置一個父div和一個子div,其中父盒子不設置高度,子盒子高寬都設置

html: <body><div class="one"><div class="two"></div></div> </body> </html> css: *{margin: 0px;padding: 0px; } .one{width: 300px;margin-left: 50px;background-color: aquamarine; } .two{width: 100px;height: 100px;background-color: rgb(210, 70, 70); }

正常情況下結果:父盒子沒有設置高度,它的高度就是子盒子的高度

?1.給子盒子設置浮動,結果就只有子盒子存在,父盒子由于沒有元素支撐沒有顯示

.two{width: 100px;height: 100px;float: left;background-color: rgb(210, 70, 70); }

?2.給子盒子加上絕對定位,一樣會導致盒子塌陷,為什么呢?

因為絕對定位也是脫離文檔流,絕對定位是相對于存在定位屬性的父元素進行偏移,父元素無定位則順推至祖先元素判斷是否存在定位,若存在則相對于祖先元素進行偏移,若不存在則以此類推直至無祖先元素,若無父元素,則相對于瀏覽器進行偏移,由于父元素本身沒有高度而不會有空間存在,所以就會相對于瀏覽器偏移,進而導致盒子塌陷。

.two{width: 100px;height: 100px;position: absolute;/* float: left; */background-color: rgb(210, 70, 70); }

?3.給盒子加上固定定位,結果也是如此,為什么呢?

因為固定定位也是脫離文檔流,是相對于瀏覽器窗口進行偏移,定位參照點跟父元素沒有關系。

?2.如何清除盒子塌陷呢?

1.給每個盒子的寬高都寫死,大小合適為止

  • 優點:簡單方便
  • 缺點:非自適應,瀏覽器的窗口大小直接影響用戶體驗。

2.給父盒子也添加浮動,讓其也脫離標準文檔流。

  • 優點:方便;
  • 缺點:對頁面的布局不是很友好,不易維護。
.one{width: 300px;margin-left: 50px;float: left;background-color: aquamarine; } .two{width: 100px;height: 100px;float: left;background-color: rgb(210, 70, 70); }

??

3.?給父盒子添加overflow:auto;或者overflow:hidden;。

使用overflow: hidden時,實際上就創建了一個塊級格式化上下文,該塊級格式化上下文決定了height:auto(不設置height時,其默認值為auto)是如何計算的。
計算塊級格式化上下文的高度時,浮動元素也參與計算。因此,父元素在計算其高度時,加入了浮動元素的高度,就達到了清理浮動的效果。

.one{width: 300px;margin-left: 50px;/* float: left; */overflow: hidden;background-color: aquamarine; } .two{width: 100px;height: 100px;float: left;background-color: rgb(210, 70, 70); }

?4.父盒子里最下方引入清除浮動塊

clear:both;是使它所在的塊元素周圍不允許有浮動,所有也可以起到消除塌陷的作用

不過單獨添加一個清除浮動塊有點冗余了

<body><div class="one"><div class="two"></div><div class="three"></div></div> </body> .one{width: 300px;margin-left: 50px;background-color: aquamarine; } .two{width: 100px;height: 100px;float: left;background-color: rgb(210, 70, 70); } .three{clear: both; }

5、為外部盒子添加after偽類,設置clear屬性清除浮動。

zoom:1;作用:設置或檢索對象的縮放比例,觸發IE瀏覽器的haslayout屬性,解決浮動, margin重疊等一些問題。

.one::after{content: '';clear: both;display: block;zoom: 1; }

?

總結

以上是生活随笔為你收集整理的Css 盒子塌陷的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。