HTML+CSS:浮動詳解

在HTML+CSS布局中,浮動(float) 是一種經典的布局技術,用于控制元素在頁面中的排列方式。它最初設計用于實現文字環繞圖片的效果,后來被廣泛用于復雜布局,但隨著Flexbox和Grid的興起,其使用場景有所減少,但仍是前端基礎中需要掌握的重要概念。

一、浮動的基本概念

浮動的本質:讓元素脫離正常的文檔流(Normal Flow),并向左或向右移動,直到碰到父元素的邊緣或其他浮動元素。

  • 正常文檔流:元素默認按照從上到下、從左到右的順序排列(塊級元素獨占一行,行內元素并排)。
  • 浮動后:元素會"漂浮"起來,不再占據原來在文檔流中的位置,導致后續元素可能向上移動并環繞它。

二、浮動的語法

通過float屬性設置浮動,可選值如下:

selector {float: none;   /* 默認值,不浮動 */float: left;   /* 向左浮動 */float: right;  /* 向右浮動 */
}
示例:文字環繞圖片
<div class="container"><img src="example.jpg" style="float: left; margin-right: 10px;" width="200"><p>這是一段文字,會環繞在圖片右側...(文字內容足夠長時,會在圖片下方繼續排列)</p>
</div>

效果:圖片向左浮動,文字會自動環繞在圖片右側和下方。

三、浮動的特性

  1. 脫離文檔流,但不脫離文本流
    • 浮動元素不再占據文檔流的位置,后續非浮動元素會填補其空間。
    • 但文本(或行內元素)會環繞浮動元素,不會被其覆蓋(這是浮動設計的初衷)。
  2. 具有“塊級”特性
    • 行內元素浮動后,會自動具備塊級元素的特性(可設置寬高、margin/padding等),例如:
span {float: left;width: 100px;  /* 行內元素默認無法設置寬高,浮動后可生效 */height: 50px;
}
  1. 浮動元素會“收縮”
    • 塊級元素浮動后,如果未設置寬度,會根據內容自動收縮(默認塊級元素寬度為父元素100%)。
  2. 多個浮動元素會并排排列
    • 同一方向的浮動元素(如多個float: left)會在一行內依次排列,超出父元素寬度時會自動換行。

四、浮動的問題:父元素高度坍塌

浮動元素脫離文檔流后,父元素無法感知其高度,導致父元素高度為0(即“高度坍塌”),可能破壞頁面布局。

示例:高度坍塌現象
<div class="parent" style="border: 2px solid red;"><div class="child" style="float: left; width: 100px; height: 100px; background: blue;"></div>
</div>
  • 父元素(紅色邊框)因子元素浮動,高度為0,邊框會“塌陷”成一條線。

沒有浮動的效果

添加了浮動的效果

五、清除浮動(解決高度坍塌)

清除浮動的核心是讓父元素重新感知浮動元素的高度,常用方法如下:

1. 額外標簽法(隔墻法)

在浮動元素的最后添加一個空的塊級元素,設置clear: both

<div class="parent"><div class="child" style="float: left;"></div><!-- 額外標簽 --><div style="clear: both;"></div>
</div>
  • clear: both表示該元素左右兩側不允許有浮動元素,迫使父元素撐開高度。
  • 缺點:增加無意義的標簽,不符合語義化。
2. 父元素設置overflow

給父元素添加overflow: hiddenauto,觸發“BFC(塊級格式化上下文)”,使父元素包含浮動元素:

.parent {overflow: hidden;  /* 或 overflow: auto */
}
  • 優點:簡單快捷,無需額外標簽。
  • 缺點:可能隱藏超出父元素的內容(如子元素的margin或陰影)。
3. 偽元素清除法(推薦)

通過父元素的::after偽元素模擬額外標簽,是目前最常用的方法:

.parent::after {content: "";       /* 偽元素必須設置content */display: block;    /* 轉為塊級元素 */clear: both;       /* 清除浮動 */visibility: hidden; /* 隱藏偽元素(不影響布局) */height: 0;         /* 高度為0,不占用空間 */
}
.parent {*zoom: 1; /* 兼容IE6/7(IE低版本不支持偽元素) */
}
  • 優點:語義化好,不添加額外標簽,兼容性強。

六、浮動的應用場景

  1. 文字環繞圖片:最經典的原生場景。
  2. 橫向排列元素:如導航欄、圖片畫廊等(多個元素浮動實現并排)。
  3. 兩欄/三欄布局:早期沒有Flexbox/Grid時,常用浮動實現左右分欄。
示例:簡單兩欄布局
<div class="container"><div class="left" style="float: left; width: 30%; background: #f0f0f0;">左側欄</div><div class="right" style="float: right; width: 70%; background: #e0e0e0;">右側欄</div><div style="clear: both;"></div> <!-- 清除浮動,避免影響后續元素 -->
</div>

七、浮動的注意事項

  1. 謹慎嵌套浮動:多層浮動可能導致復雜的布局問題,難以調試。
  2. 及時清除浮動:只要父元素包含浮動子元素,就需要清除浮動,避免高度坍塌。
  3. 現代布局替代方案:對于復雜布局,優先使用Flexbox(一維)或Grid(二維),它們更簡潔、易維護,且避免了浮動的副作用。

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

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

相關文章

GPIO初始化及調用

下面把 HAL 庫 和 標準外設庫&#xff08;SPL&#xff09; 初始化 GPIO 點亮/熄滅 LED 的完整步驟、示例代碼和常用 API 逐一說清楚。用例默認 PC13 接 LED&#xff08;藍板常見&#xff1b;低電平點亮&#xff0c;高電平熄滅——若板子相反&#xff0c;只把寫 1/0 對調即可&am…

【GPT入門】第48課 LlamaFacotory 合并原模型與LoRA模型

【GPT入門】第48課 LlamaFacotory 合并原模型與LoRA模型1.合并原模型與LoRA訓練的增量模型2. 測試模型1.合并原模型與LoRA訓練的增量模型 llamafactory-cli webui 執行合并 合并后模型大小 (base) rootautodl-container-b4b04ea4f2-b5ee47d1:~# du -sh /root/autodl-tmp/mod…

Python爬蟲實戰:研究tumblr,構建博客平臺數據采集分析系統

1. 引言 1.1 研究背景 在信息爆炸的時代,社交媒體平臺已成為人們獲取信息、表達觀點和進行社交互動的主要渠道。這些平臺上積累的海量數據包含了用戶偏好、社會趨勢、文化現象等豐富信息,對學術研究、市場分析、產品開發等領域具有重要價值。 Tumblr 作為一個綜合性的輕博客…

集成算法學習總結

一、集成學習基礎認知 核心思想&#xff1a;集成學習&#xff08;ensemble learning&#xff09;通過構建并結合多個個體學習器來完成學習任務&#xff0c;類似于 “多個專家共同決策”&#xff0c;通常比單個學習器的性能更優。其核心邏輯是利用多個學習器的優勢互補&#xff…

線程安全的產生以及解決方案

線程安全原子性&#xff08;Atomicity&#xff09;、可見性&#xff08;Visibility&#xff09;、有序性&#xff08;Ordering&#xff09; 是保證線程安全的三大核心要素 —— 線程安全問題的本質&#xff0c;幾乎都是這三個特性中的一個或多個被破壞導致的。操作不會被 “中途…

Spring Cloud Netflix學習筆記01

文章目錄前言一、微服務概述什么是微服務&#xff1f;微服務與微服務架構微服務優缺點優點缺點微服務技術棧有那些&#xff1f;二.SpringCloud入門概述SpringCloud是什么&#xff1f;SpringCloud和SpringBoot的關系Dubbo 和 SpringCloud技術選型總結SpringCloud能干嘛&#xff…

專題:2025母嬰行業消費洞察與分齡營養趨勢報告|附40 +份報告PDF、交互圖表數據匯總下載

原文鏈接&#xff1a;https://tecdat.cn/?p43654 當95后媽媽拿著計算器對比DHA純度&#xff0c;當爸爸們為“防紅屁屁紙尿褲”貨比三家&#xff0c;母嬰行業的風向早就變了。從“一把奶粉喂到3歲”到“按月齡定制營養包”&#xff0c;從“進口就好”到“看專利數據下單”&…

redhat6/centos6 配置yum源

由于RHEL6/centos6系統官方早就停止通知維護了&#xff0c;公司的開發服務器有比較老&#xff0c;發現竟然scp都沒有裝。。。今天配置個本地yum源&#xff0c;安裝一下常規軟件和開發環境比較簡單&#xff0c;直接上代碼1.上傳一個centos6的iso文件CentOS-6.5-x86_64-bin-DVD1.…

day31 SQLITE

數據庫相關函數數據庫創建int sqlite3_open( const char *filename, sqlite3 **ppDb);功能&#xff1a;打開數據庫&#xff0c;不存在則創建參數&#xff1a;const char *filename 數據庫名sqlite3 **ppDb 二級指針&#xff0c;傳出ppDb數據庫的一級指…

嵌入式-SPI番外之按鈕驅動程序的編寫-Day15

目錄 一、按鈕簡單操作回憶 二、按鈕新操作實現 &#xff08;1&#xff09;按鈕的點擊實現燈亮/滅 ①連接電路 ②初始化板載LED和按鈕 ③按鈕程序的基本原理&#xff08;核心仍為0亮/1滅&#xff09; ④按鈕消抖的原理 三、按鈕封裝的操作-點擊&#xff0c;雙擊&#xf…

星域智鏈科技:用科技點亮生活,以 AI 拓展無限可能

星域智鏈科技&#xff08;東莞市&#xff09;有限公司簡介 星域智鏈科技&#xff08;東莞市&#xff09;有限公司&#xff0c;理念是 讓科技便利生活、豐富生活&#xff0c;專注于科技、AI領域。 全場景 GPS 定位器 —— 精準追蹤&#xff0c;守護安全&#xff0c;適用于車輛…

國內代理IP在SEO行業中的應用

隨著互聯網的快速發展&#xff0c;SEO&#xff08;搜索引擎優化&#xff09;已經成為了數字營銷的重要組成部分。無論是企業還是個人站長&#xff0c;都希望通過SEO提升自己網站的排名和流量。然而&#xff0c;隨著競爭的激烈&#xff0c;傳統的SEO優化手段已經逐漸顯現出局限性…

Linux + arm 內存屏障

ARM 硬件層的屏障指令DMB (Data Memory Barrier)&#xff1a;保證在它之前的內存訪問&#xff08;符合給定域/類型&#xff09;在它之后的內存訪問之前對可見性排序。常用域&#xff1a;ish&#xff08;Inner Shareable&#xff09;&#xff0c;sy&#xff08;system-wide&…

網絡安全中的遠程控制活動檢測與防御策略

本文還有配套的精品資源&#xff0c;點擊獲取 簡介&#xff1a;遠程控制技術在IT領域中用于網絡連接和設備操作&#xff0c;但同樣被黑客利用進行非法入侵。端口占用情況是識別遠程控制活動的關鍵因素&#xff0c;使用工具如"cports"可以監控這些端口。系統中未知…

UIGestureRecognizer 各個子類以及其作用

在 iOS 里&#xff0c;UIGestureRecognizer 是一個抽象基類&#xff0c;專門用來處理手勢事件。它本身不能直接用&#xff0c;必須用它的 子類。這些子類分別對應常見的手勢識別器。常見的 UIGestureRecognizer 子類及作用1. UITapGestureRecognizer作用&#xff1a;點擊手勢&a…

計算機網絡 HTTPS 全流程

HTTPS 通信的全流程&#xff08;特別是 TLS 握手階段&#xff09;中使用的三個隨機數是保障安全性的核心設計&#xff0c;不能隨意減少。每個隨機數都承擔著至關重要的安全職責。下面詳細解釋 HTTPS 全流程&#xff0c;并重點分析這三個隨機數的作用和必要性&#xff1a;&#…

DL00271-基于YOLOv11的激光雷達LiDAR船舶目標檢測含完整數據集

【CSDN推薦】基于YOLOv11的激光雷達&#xff08;LiDAR&#xff09;船舶目標檢測——含完整數據集&#xff01;&#x1f6a2; 科研人員必看&#xff01; 高校老師、學生和研究者們&#xff0c;前沿技術來了&#xff01;本論文利用YOLOv11模型&#xff0c;結合激光雷達&#xff0…

SQL-leetcode—3374. 首字母大寫 II

3374. 首字母大寫 II 表&#xff1a;user_content -------------------- | Column Name | Type | -------------------- | content_id | int | | content_text| varchar | -------------------- content_id 是這張表的唯一主鍵。 每一行包含一個不同的 ID 以及對應的文…

告別籠統的 200 OK:一份給 API 設計者的 HTTP 狀態碼終極指南

文章目錄寫在前面問題描述核心結論與建議簡要描述詳細闡述1xx - 信息性響應 (Informational)2xx - 成功 (Successful)3xx - 重定向 (Redirection)4xx - 客戶端錯誤 (Client Error)5xx - 服務器錯誤 (Server Error)HTTP 狀態碼速查表參考以及更多更詳細的狀態碼查詢寫在前面 你…

從防抖節流到鏈表樹:編程世界中的抽象優化藝術

從防抖節流到鏈表樹&#xff1a;編程世界中的抽象優化藝術 在編程的知識體系中&#xff0c;有些概念看似毫不相關&#xff0c;卻在底層邏輯上有著驚人的相似之處。防抖與節流、鏈表與樹&#xff0c;這兩組分屬不同領域的概念&#xff0c;正是這種思維共性的典型代表。它們不僅展…