清除浮動的重要性及解決辦法

由于父級盒子很多情況下,不方便給高度,但是子盒子浮動又不占有位置,最后父級盒子高度為0時,就會影響下面的標準流盒子。

一、為什么要清除浮動

  • 父元素高度塌陷:?如果父元素內部的所有子元素都浮動了,并且沒有設置明確的高度,父元素可能會因為子元素脫離文檔流而坍塌為零高度,導致父元素的背景、邊框等樣式無法顯示。
  • 后續元素布局錯亂:?浮動元素會影響后續元素的布局,可能導致后續元素環繞浮動元素,或者出現垂直重疊等問題。

二、清除浮動的方法

1.額外標簽法

額外標簽法也稱為隔墻法,是W3C推薦的做法。

  • 原理:?clear?屬性指定一個元素是否允許其周圍的浮動元素。 它有四個值:leftrightboth?和?none。 設置了?clear?屬性的元素會強制移動到指定的浮動元素下方。

  • 用法:?在浮動元素后面的元素上添加?clear?屬性。(在浮動元素末尾添加一個空的標簽)

  • 優點:?簡單易懂,兼容性好。

  • 缺點:?需要添加額外的 HTML 元素,可能影響語義化。

<div class="container"><div class="float-left">左浮動</div><div class="float-right">右浮動</div><div class="clear"></div>  <!-- 添加一個空的清除元素 -->
</div><style>.container {border: 1px solid black;overflow: hidden; /* 或者使用其他方法解決父元素高度塌陷,詳見下文 */}.float-left {float: left;width: 100px;height: 50px;background-color: lightblue;}.float-right {float: right;width: 100px;height: 50px;background-color: lightgreen;}.clear {clear: both; /* 清除左右浮動 */}
</style>

2.父級添加overflow

可以給父級添加 overflow 屬性,將其屬性值設置為 hidden , auto 或 scroll 。

  • 原理:?overflow?屬性定義了當一個元素的內容溢出其容器時發生的事情。 當?overflow?屬性的值不是?visible?時(例如,hiddenautoscroll),它會創建一個新的塊級格式化上下文,其可以包含浮動元素,從而解決父元素高度塌陷的問題。

  • 用法:?將?overflow?屬性添加到浮動元素的父元素上。

  • 優點:?不需要添加額外的 HTML 元素,簡潔方便。

  • 缺點:?可能導致內容被裁剪或出現滾動條 (如果使用?auto?或?scroll),具體取決于內容是否超出容器。 如果父元素有定位,overflow: hidden?可能會影響?z-index

<div class="container"><div class="float-left">左浮動</div><div class="float-right">右浮動</div>
</div><style>.container {border: 1px solid black;overflow: hidden; /* 或者 auto, scroll */}.float-left {float: left;width: 100px;height: 50px;background-color: lightblue;}.float-right {float: right;width: 100px;height: 50px;background-color: lightgreen;}
</style>

3. :after 偽元素法

:after 是額外標簽法的升級版,也是父級元素添加。

  • 原理:?在父元素的末尾添加一個偽元素,并使用?clear: both?清除浮動。 這種方法不需要添加額外的 HTML 元素,而且代碼簡短易懂。

  • 用法:?在浮動元素的父元素上使用?:after?偽元素,并添加?clear: both?屬性。

  • 優點:?不需要添加額外的 HTML 元素,代碼簡潔,兼容性好,推薦使用。

  • 缺點:?需要理解偽元素的概念。

<div class="container"><div class="float-left">左浮動</div><div class="float-right">右浮動</div>
</div><style>.container {border: 1px solid black;}.container::after {content: "";display: block; /* 或者 table */clear: both;}.float-left {float: left;width: 100px;height: 50px;background-color: lightblue;}.float-right {float: right;width: 100px;height: 50px;background-color: lightgreen;}
</style>

4.雙偽元素清除浮動(給父元素添加)

  • 優點:代碼更簡潔
  • 缺點:照顧低版本瀏覽器

三、總結

為什么要清除浮動?

  • 父級沒高度。
  • 子盒子浮動了。
  • 影響下面布局了,就應該清除浮動。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79365.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79365.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79365.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

域名與官網的迷思:數字身份認證的全球困境與實踐解方-優雅草卓伊凡

域名與官網的迷思&#xff1a;數字身份認證的全球困境與實踐解方-優雅草卓伊凡 一、官網概念的法律與技術界定 1.1 官網的實質定義 當卓伊凡被問及”公司域名就是官網嗎”這一問題時&#xff0c;他首先指出&#xff1a;”這相當于問’印著某公司logo的建筑就是該公司總部嗎’…

kotlin flatMap 變換函數的特點和使用場景

Kotlin 中的 flatMap 是一個非常常用的函數&#xff0c;尤其在處理集合&#xff08;如 List、Set 等&#xff09;時。它結合了 map 和 flatten 的功能&#xff0c;常用于將多個集合扁平化為一個單一的集合。 一、flatMap 函數的特點 轉換 扁平化&#xff1a; 對集合中的每個元…

java學習之數據結構:二、鏈表

本節介紹鏈表 目錄 1.什么是鏈表 1.1鏈表定義 1.2鏈表分類 2.鏈表實現 2.1創建鏈表 1&#xff09;手動創建 2&#xff09;創建鏈表類進行管理鏈表的相關操作 2.2添加元素 1&#xff09;頭插法 2&#xff09;尾插法 3&#xff09;任意位置插入 2.3刪除 2.4查找 1&…

【計算機網絡-應用層】解析HTTP會話保持:Cookie與Session的原理與實踐

&#x1f4da; 博主的專欄 &#x1f427; Linux | &#x1f5a5;? C | &#x1f4ca; 數據結構 | &#x1f4a1;C 算法 | &#x1f152; C 語言 | &#x1f310; 計算機網絡 上篇文章&#xff1a;實現HTTP服務器 下篇文章&#xff1a;傳輸層協議-UDP 文章摘要&…

[ Qt ] | 第一個Qt程序

1. 創建Qt項目 我們打開Qt Create工具&#xff0c;左上角“文件”&#xff0c;新建文件。 --- --- --- --- 這個是我們的APP“走出國門”的時候&#xff0c;要關注的&#xff0c;這里就不說了。 后面這兩個直接默認&#xff0c;下一步就行~~。 2. 項目默認內容 下面就是Qt C…

影刀RPA中新增自己的自定義指令

入門到實戰明細 1. 影刀RPA自定義指令概述 1.1 定義與作用 影刀RPA的自定義指令是一種強大的功能&#xff0c;旨在提高流程復用率&#xff0c;讓用戶能夠個性化定制指令&#xff0c;實現流程在不同應用之間的相互調用。通過自定義指令&#xff0c;用戶可以將常用的、具有獨立…

LangChain:重構大語言模型應用開發的范式革命

2022年10月22日,Harrison Chase在GitHub上提交了名為LangChain的開源項目的第一個代碼版本。這個看似普通的代碼提交,卻悄然開啟了一場重塑大語言模型(LLM)應用開發范式的技術革命。彼時,距離ChatGPT引爆全球人工智能浪潮尚有一月之遙,但LangChain的誕生已經預示了LLM技術…

區塊鏈+醫療:破解數據共享困局,筑牢隱私安全防線

在醫療健康領域&#xff0c;數據共享與隱私保護一直是一對難以調和的矛盾。一方面&#xff0c;分散在不同機構的醫療數據&#xff08;如電子病歷、檢查報告、用藥記錄&#xff09;阻礙了診療效率和科研進展&#xff1b;另一方面&#xff0c;患者隱私泄露事件頻發&#xff0c;加…

pycharm導入同目錄下文件未標紅但報錯ModuleNotFoundError

此貼僅為記錄debug過程&#xff0c;為防后續再次遇見 問題 問題情境 復現文章模型&#xff0c;pycharm項目初次運行 問題描述 在導入同目錄下其它文件夾中的python文件時&#xff0c;未標紅&#xff0c;但運行時報錯ModuleNotFoundError 報錯信息 未找到該模塊 Traceback …

啟發式算法-蟻群算法

蟻群算法是模擬螞蟻覓食行為的仿生優化算法&#xff0c;原理是信息素的正反饋機制&#xff0c;螞蟻通過釋放信息素來引導同伴找到最短路徑。把問題的元素抽象為多條路徑&#xff0c;每次迭代時為每只螞蟻構建一個解決方案&#xff0c;該解決方案對應一條完整的路徑&#xff0c;…

Redis 腳本:深入理解與實踐指南

Redis 腳本:深入理解與實踐指南 引言 Redis 是一款高性能的鍵值存儲數據庫,廣泛應用于緩存、消息隊列、分布式鎖等領域。腳本在 Redis 中扮演著至關重要的角色,它允許開發者以編程的方式執行復雜的操作,提高數據處理的效率。本文將深入探討 Redis 腳本的概念、應用場景、…

Vue3 Echarts 3D立方體柱狀圖實現教程

文章目錄 前言一、實現原理二、series ——type: "pictorialBar" 簡介2.1 常用屬性 三、代碼實戰3.1 封裝一個echarts通用組件 echarts.vue3.2 實現一個立方體柱狀圖&#xff08;1&#xff09;首先實現一個基礎柱狀圖&#xff08;2&#xff09;添加立方體棱線&#x…

每天一道面試題@第五天

1.包裝類型的緩存機制了解么&#xff1f; 指部分包裝類在創建對象時&#xff0c;會將一定范圍內的對象緩存起來&#xff0c;當再次使用相同值創建對象時&#xff0c;優先從緩存中獲取&#xff0c;而不是重新創建新對象。【提高性能】【節省內存】 列舉幾個常見的包裝類緩存機…

mysql--索引

索引作為一種數據結構&#xff0c;其用途是用于提升檢索數據的效率。 分類 普通索引&#xff08;INDEX&#xff09;&#xff1a;索引列值可重復 唯一索引&#xff08;UNIQUE&#xff09;&#xff1a;索引列值必須唯一&#xff0c;可以為NULL 主鍵索引&#xff08;PRIMARY KEY&a…

王道考研數據結構課后題代碼題(2026版)——排序部分

一、前言 本合集以王道考研《數據結構》輔導書&#xff08;2026版&#xff09;課后習題代碼題部分為參考依據&#xff0c;給出課后習題代碼題的可執行代碼的實現&#xff0c;本合集使用編程語言以C/C語言為主&#xff0c;也不限于使用Python和Java語言&#xff0c;本套合計代碼…

AVFormatContext 再分析零

隨著對于AVFormatContext 各個參數的學習&#xff0c;逐漸可以從 整體架構上 再認識一下 AVFormatContext 了。 還是從解封裝的第一步開始。 int avformat_open_input(AVFormatContext **ps, const char *url, ff_const59 AVInputFormat *fmt, AVDictionary **options); 實際上…

uniapp打包apk詳細教程

目錄 1.打apk包前提條件 2.獲取uni-app標識 3.進入dcloud開發者后臺 4.開始打包 1.打apk包前提條件 1.在HBuilderX.exe軟化中&#xff0c;登錄自己的賬號 2.在dcloud官網&#xff0c;同樣登錄自己的賬號。沒有可以免費注冊。 2.獲取uni-app標識 獲取方法&#xff1a;點…

Vue2 和 Vue3 的核心區別

1. 響應式原理&#xff1a;從「手動擋」到「自動擋」 Vue2&#xff1a; 使用 Object.defineProperty 監聽數據變化&#xff0c;但無法檢測新增屬性和數組索引修改&#xff0c;需要借助 Vue.set。 // Vue2 中修改數組元素不會觸發視圖更新 this.list[0] 新值; // ? 不…

EMMC存儲性能測試方法

記于 2022 年 9 月 15 日 EMMC存儲性能測試方法 - Wesley’s Blog 參考Android-emmc性能測試 | 一葉知秋進行實踐操作 dd 命令 頁面緩存 為了測試 emmc 的真實讀寫性能&#xff0c;我們需要先把頁面緩存給清理&#xff1a; echo 1 > /proc/sys/vm/drop_caches console:…

軟件管理(安裝方式)

1.rpm安裝 1.1.rpm介紹 rpm軟件包名稱: 軟件名稱 版本號(主版本、次版本、修訂號) 操作系統 -----90%的規律 舉例:openssh-6.6.1p1-31.el7.x86_64.rpm 數字是版本號:第一位主版本號,第二位次版本號,帶橫杠的是修訂號, el幾---操作系統的版本。 #用rpm安裝需要考慮如下信…