子元素浮動造成父元素坍塌的原因分析和解決方法
現象:
在製作網頁的導航欄的時候,往往會在父元素.nav 中加入一個logo或者標題 h1 再來加入一個導航列表 ul,這個時候會分別給他們加上 float:left / right 樣式。使用chrome的盒子模型檢視的時候會發現.nav 高度為0,也就是“坍塌”了。
用chrome的盒子模型檢視我下面的寫的程式碼時發現,.container 出現了坍塌現象,而 .nav 卻沒有。
<div class="nav"> <div class="container"> <h1>科普之家</h1> <ul> <li><a href="#news"> 新聞之框 </a></li> <li><a href="#common"> 常識科普 </a></li> <li><a href="#video"> 精彩視訊 </a></li> <li><a href="#article"> 書籍文章 </a></li> </ul> </div> </div>
.nav { position: fixed; width: 100%; z-index: 1000; background: #ccc; } .container { margin: auto 10%; } .nav h1 { float: left; line-height: 86.4px; font-size: 2.5em; font-weight: bolder; font-family: "方正舒體"; color: #eee; } .nav ul { float: right; list-style: none; } .nav li { float: left; margin: 10px auto; } .nav li a { display: block; padding: 20px; text-decoration: none; font-size: 1em; font-weight: bold; }
分析:
回想學習時提到的,子元素設定浮動,便脫離了文件流(不會影響在文件流的文字)。父元素沒有設定固定的高度,子元素影響不了父元素無法為父元素撐開高度,便造成了坍塌現象。這便是為什麼 .container 沒有高度的原因;那為什麼 .container 的父元素 .nav 卻會有高度呢?我猜想是我為 .nav 設定 fixed 之後與它脫離了文件流,在同樣都脫離了文件流的情況下 h1 和 ul 會與其產生影響,便為其撐開了高度。為了驗證這個猜想我把 fixed 屬性去掉,果不其然, .nav 也出現了坍塌現象。
結論:
1、坍塌現象產生的原因:子元素設定浮動,脫離文件流,不再影響父元素,而父元素沒有設定高度,沒有其他元素為父元素“撐”開高度,便產生坍塌現象。
2、脫離文件流的元素不會影響在文件流內的元素;而脫離文件流的元素之間可能會互相影響(很明顯絕對定位元素之間不會影響,以後找機會探討一下。)
解決:
既然是浮動引起的問題,那問題就自然變成如何消除浮動。
搜尋引擎總結的幾個常見的方法:(原諒我現在並不全懂,儘量以後慢慢理解每個方法= =)
1、父元素也設定浮動或絕對定位;
2、父元素設定 overflow:hidden / auto 屬性;
3、在子元素最後增加新元素,或在父元素的下一個元素,並應用 clear:both 屬性;
4、使用 :class 偽類;(這個貌似是最拉風的?)
相關推薦
子元素浮動造成父元素坍塌的原因分析和解決方法
現象: 在製作網頁的導航欄的時候,往往會在父元素.nav 中加入一個logo或者標題 h1 再來加入一個導航列表 ul,這個時候會分別給他們加上 float:left / right 樣式。使用chrome的盒子模型檢視的時候會發現.nav 高度為0,也就是“坍塌”了。 用
用axis2解析xml失敗的原因分析和解決方法
和同事之間調介面時遇到了如下的問題,同事用的LotusScript(wsdl檔案是由他那邊提供的),我用的是Java,我這邊通過axis2去解析該wsdl,但解析時報下面這樣的錯。 More than one part for message XMLMAINRequest
api-ms-win-crt**.dll缺失原因分析和解決方法
系統是否安裝了此類更新,可以通過檢視“系統資訊”來判斷,操作:Win鍵+R,輸入 cmd /k systeminfo.exe 確定。當然,也可以通過開啟控制面板或使用第三方工具來檢視。 如果系統中未安裝KB2999226、KB3118401更新,則利用系統Windows Update掃描更新
關於子元素的margin-top溢出和元素浮動對父元素高度影響解決方案
20px oat -- 外邊距 生成 round border top display 以下是個人學習筆記,僅供學習參考。 1.關於子元素的margin-top作用在無margin-top-border的父元素上導致子元素的margin-top溢出問題。 在給沒有margi
子元素浮動讓父元素塌陷解決辦法
父元素沒有給固定高度,子元素設有固定的高度,但是父雲素也沒有被子元素的高度撐開。子元素浮動了,而浮動屬性會使元素脫離文件流,即子元素設定float屬性後,當前的html文件會當作元素不存在一樣,所以可以看作父元素內根本沒有內容,高度當然也就撐不開。 解決辦法: 
CSS子元素浮動導致父元素高度塌陷問題
根據W3C標準,在頁面中元素都有一個隱含的屬性叫做 Block Formatting Context,簡稱 BFC,該屬性可以設定開啟或者關閉,預設是關閉的。 當開啟元素的BFC以後,元素會具有以下特性: 1.父元素的垂直外邊距不會和子元素重疊
css之子元素浮動導致父元素高度塌陷解決方案
問題引入:在製作導航欄時,若父元素ul不給出高度的具體數值,只給背景。而子元素li又用到了float:left。 那麼,這種情況就會導致父元素的背景“消失”,因為浮動元素脫離文件流,不佔據空間,因此相當於父列表沒有內容。 解決方案: 一:新增進行清理浮動的元素(但書中說,這
清除盒子內子元素浮動導致父元素塌陷的5種方法
before -s rfi 方便 css float 需要 for 通過 更詳細的解釋請移動到: 地址1:http://www.cnblogs.com/chedabang/p/5973601.html 地址2:https://www.cnblogs.com/libi
CSS中子元素浮動導致父元素高度塌陷解決方案
<style type="text/css"> #container { border: 1px solid green; } .div1 { float: left; width: 100px; height: 100px; } .div2 {
MySQL Err 1418 的原因分析及解決方法
mysql 1418 MySQL的有個參數log_bin_trust_function_creators,官方文檔對這個參數的介紹、解釋如下所示: This variable applies when binary logging is enabled. It controls whether st
Error:Minimum supported Gradle version is 2.14.1. Current version is 2.10.原因分析和解決。
圖片 幫助 url err ... tle IT .net fcm 最近和主管一起開發項目一直出現這個問題: Error:Minimum supported Gradle version is 2.14.1. Current version is 12.10. If usi
POI讀取word時讀取${}分段了原因分析以及解決方法
POI讀取word內容的疑問 兩片內容相同的word,poi分割成XWPFRun集合的時候,發現相同的段落內容有空行。 word1列印的段落內容 word2列印的段落內容 造成兩次段落內容分割不同的情況我大致知道,word2每一行純手打,word1複製過來的。但是有
關於PHP的 PHP-FPM程序CPU 100%的一些原因分析和解決方案
之前碰到過php-fpmCPU高達80%-90%,特此記錄下 1. 檢視是否是硬體問題 方式:top 命令 主要檢視:load average(平均負載),這是一個4核8G記憶體的伺服器 1分鐘平均負載:2.32; 5分鐘平均負載:2.18; 15分鐘平均負載:3.95; loa
Connection reset原因分析和解決方案
在使用HttpClient呼叫後臺resetful服務時,“Connection reset”是一個比較常見的問題,有同學跟我私信說被這個問題困擾很久了,今天就來分析下,希望能幫到大家。例如我們線上的閘道器日誌就會拋該錯誤: 從日誌中可以看到是Socket套接字
Webview載入 URL 失敗的原因分析和解決辦法
在使用webview載入URL失敗的情況,檢查其他地方有沒有呼叫webview的pauseTimers 方法 public void pauseTimers () 此方法不僅僅針對當前的webview而是全域性的全應用程式的webview,它會暫停所有we
關於@Aspect 註解不起作用的原因之一,和解決方法
在使用@Aspect 註解進行AOP程式設計時,如果專案中使用到了spring mvc 那麼如果你想使用AOP 來攔截controller層的方法時,你的AOP註解需要宣告在dispatcher-servlet.xml中與spring mvc的配置定義在一起!!!如果修改完後
import json後,報錯:AttributeError: 'module' object has no attribute 'dumps,原因分析及解決方法
編寫python程式碼,import json後,報錯:AttributeError: 'module' object has no attribute 'dumps',如下圖所示: 報錯資訊為:模組沒有方法dumps 單步除錯: 單步除錯,發現報錯相同。 檢視json
ANR原因分析及解決方法
內容目錄 1 ANR是如何產生的 1.1 ANR產生條件 ANR的產生需要同時滿足三個條件: 主執行緒:只有應用程式程序的主執行緒響應超時才會產生ANR;超時時間:產生ANR的上下文不同,超時時間也不同,但只要超過這個時間
簡訊驗證碼接收不到原因分析和解決方案分析
簡訊驗證碼是通過傳送驗證碼到手機的一種有效的驗證碼系統。無論是大型網站尤其是購物網站,都提供有手機簡訊驗證碼功能,可以比較準確和安全地保證購物的安全性,驗證使用者的正確性。創藍253簡訊服務平臺上總結了簡訊驗證碼接收不到的幾個原因:(1)簡訊閘道器擁堵或出現異常在一些節假日或
Media start error原因分析及解決方法
之前在專案的時候,遇到到Media Recorder在快速啟動停止等一系列操作的後,再次啟動時,會failed的問題,類似的Log如下: ERROR/MediaRecorder(9008): startfailed:-19