6_CSS布局之浮動的應用

day06_CSS布局之浮動的應用

本課目標(Objective)

  • 理解什么是浮動
  • 掌握浮動的三種機制
  • 掌握浮動的案例應用

1 CSS 布局的三種機制

  • CSS 提供了 3 種機制來設置盒子的擺放位置,分別是普通流(標準流)、浮動定位

    • 普通流(標準流)

      • 塊級元素會獨占一行,從上向下順序排列;

        • 常用元素:div、hr、p、h1~h6、ul、ol、dl、form、table

      • 行內元素會按照順序,從左到右順序排列,碰到父元素邊緣則自動換行;

        • 常用元素:span、a、i、em等

    • 浮動

      • 讓盒子從普通流中起來,主要作用讓多個塊級盒子一行顯示。

    • 定位

      • 將盒子固定在瀏覽器的某一個位置

  • 案例:01.普通標準流.html

2 為什么需要浮動?

  • 如何讓多個盒子(div)水平排列成一行?

  • 如何實現盒子的左右對齊?

  • 雖然我們前面學過行內塊(inline-block) 但是它有弊端:

    • 它可以實現多個元素一行顯示,但是中間會有空白縫隙,不能滿足以上第一個問題。

    • 它不能實現以上第二個問題,盒子左右對齊

  • 案例:02.為什么要浮動.html

3 什么是浮動-float

  • 概念:元素的浮動是指設置了浮動屬性的元素,會脫離標準普通流的控制,移動到指定位置。

    • 讓多個盒子(div)水平排列成一行,使得浮動成為布局的重要手段。

    • 可以實現盒子的左右對齊等等。

  • 通過 float屬性定義浮動,語法如下

選擇器 { float: 屬性值; 
}
屬性值描述
none元素不浮動(默認值)
left元素向左浮動
right元素向右浮動
3.1 浮動例子演示
  • 設置了浮動就會漂浮在普通流的上面。

    • float 屬性會讓盒子漂浮在標準流的上面,所以第二個標準流的盒子跑到浮動盒子的底下了。

    • 把自己原來的位置漏給下面標準流的盒子,就不占有原來的位置,是脫離標準流的。

  • 案例:03.浮動例子演示.html

    • 浮動的元素互相貼靠一起的,但是如果父級寬度裝不下這些浮動的盒子, 多出的盒子會另起一行對齊

    • float屬性會改變元素display屬性,任何元素都可以浮動。浮動元素會生成一個塊級框,而無論它本身是何種元素。生成的塊級框和我們前面的行內塊極其相似。

    • 加了浮動的盒子是不占位置的,它原來的位置給了標準流的盒子。

4 基于Float的應用案例

  • 布局的時候需要給浮動的元素添加一個標準流,以最大化的減小對其他標準流的影響。

4.1 浮動應用案例1
  • 案例:04.浮動應用案例1.html

4.2 浮動應用案例2
  • 案例:05.浮動應用案例2.html

  • 在制作導航欄過程中,一般不會直接用鏈接(a)標簽而是用li標簽包含鏈接的做法,li+a 語義更清晰。

5 浮動與盒子的關系設置

5.1 浮動元素與父盒子的關系
  • 子盒子的浮動參照父盒子對齊

  • 不會與父盒子的邊框重疊,也不會超過父盒子的內邊距

  • 案例:06.浮動元素與父盒子的關系.html

5.2 浮動元素與兄弟盒子的關系
  • 在一個父級盒子中,如果前一個兄弟盒子是:

    • 浮動的,那么當前盒子會與前一個盒子的頂部對齊;

    • 普通流的,那么當前盒子會顯示在前一個兄弟盒子的下方。

  • 案例:07.浮動元素與兄弟盒子的關系.html

  • 建議: 如果一個盒子里面有多個子盒子,如果其中一個盒子浮動了,其他兄弟也應該浮動。防止引起問題

6. 浮動清除

6.1 為什么要清除浮動
  • 父級盒子在多數情況下不方便給高度,如果子盒子浮動就不占有位置,父級盒子的高度為0,就影響了下面的標準流盒子。

  • 案例:08.標準流的盒子布局.html

  • 案例:09.浮動如何影響盒子布局.html

  • 由于浮動元素不再占用原標準流的位置,所以它會對后面的元素排版產生影響就需要清除浮動后造成的影響。

  • 清除浮動主要為了解決父級元素高度為0時,子級浮動引發的遮蓋問題。清除浮動之后, 父級就會根據浮動的子盒子自動檢測高度。父級有了高度,就不會影響下面的標準流了。

6.2 清除浮動的方法
選擇器{clear:屬性值;}
屬性值描述
left不允許左側有浮動元素(清除左側浮動的影響)
right不允許右側有浮動元素(清除右側浮動的影響)
both同時清除左右兩側浮動的影響(幾乎只用clear: both;)
1. 額外標簽法(隔墻法)
  • 10.清除浮動之額外標簽法.html

    • 優點: 通俗易懂,書寫方便

    • 缺點: 添加許多無意義的標簽,結構化較差。

/*清除浮動*/
.clear {clear: both;
}
2. 父級添加overflow屬性方法
  • 11.清除浮動之父級添加overflow.html

    • 優點: 代碼簡潔

    • 缺點: 內容增多時候容易造成不會自動換行導致內容被隱藏掉,無法顯示需要溢出的元素。

? ?
可以給父級添加: overflow屬性為hidden|auto|scroll都可以實現。overflow屬性的作用如下:
https://developer.mozilla.org/zh-CN/docs/Web/CSS/overflow
3. 使用after偽元素清除浮動
  • :after 方式為空元素額外標簽法的升級版,好處是不用單獨加標簽了

 .clearfix:after {  content: ""; display: block; height: 0; clear: both; visibility: hidden;  }   .clearfix {*zoom: 1;}   /* IE6、7 專用 */
  • 優點: 結構語義化正確

  • 缺點: 由于IE6-7不支持:after,使用 zoom:1觸發 hasLayout。

  • 代表網站: 百度、淘寶網、網易等

4. 使用雙偽元素清除浮動

使用方法:

.clearfix:before,.clearfix:after { content:"";display:table; 
}
.clearfix:after {clear:both;
}
.clearfix {*zoom:1;
}
  • 優點: 代碼更簡潔

  • 缺點: 由于IE6-7不支持:after,使用 zoom:1觸發 hasLayout

  • 代表網站: 小米、騰訊等

6.3 清除浮動總結
清除浮動的方式優點缺點
額外標簽法(隔墻法)通俗易懂,書寫方便添加許多無意義的標簽,結構化較差。
父級overflow:hidden;書寫簡單溢出隱藏
父級after偽元素結構語義化正確由于IE6-7不支持:after,兼容性問題
父級雙偽元素結構語義化正確由于IE6-7不支持:after,兼容性問題

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

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

相關文章

HarmonyOS開發:回調實現網絡的攔截

前言 基于http封裝的一個網絡庫,里面有一個知識點,在初始化的時候,可以設置請求頭攔截和請求錯誤后的信息的攔截,具體案例如下: et.getInstance().init({netErrorInterceptor: new MyNetErrorInterceptor(), //設置全…

web網絡安全

web安全 一,xss 跨站腳本攻擊(全稱Cross Site Scripting,為和CSS(層疊樣式表)區分,簡稱為XSS)是指惡意攻擊者在Web頁面中插入惡意javascript代碼(也可能包含html代碼),當用戶瀏覽網頁之時&…

關于北京醫學sci論文翻譯

在醫學領域,翻譯論文是一項非常重要的工作。醫學論文的翻譯需要準確、專業、嚴謹,同時也需要考慮到醫學領域的特殊性和復雜性。那么,如何翻譯醫學論文呢?北京醫學SCI論文翻譯哪家好呢? 首先,需要具備專業的…

多目標跟蹤數據集

目錄 DanceTrack數據集 自己改進的可視化代碼: DanceTrack數據集 DanceTrack 是一個大規模的多對象跟蹤數據集。用于在遮擋、頻繁交叉、同樣服裝和多樣化身體姿態條件下對人進行跟蹤。強調運動分析在多對象跟蹤中的重要性。 GitHub地址:https://github.com/DanceTrack/Dan…

python自動化測試實戰 —— 單元測試框架

軟件測試專欄 感興趣可看:軟件測試專欄 自動化測試學習部分源碼 python自動化測試相關知識: 【如何學習Python自動化測試】—— 自動化測試環境搭建 【如何學習python自動化測試】—— 瀏覽器驅動的安裝 以及 如何更…

swing快速入門(五)

注釋很詳細,直接上代碼 上一篇 本篇新增內容: 1.布局管理器BorderLayout 2.自適應尺寸方法pack() import java.awt.*; public class swing_test_3 {public static void main(String[] args) {Frame framenew Frame("演示BorderLayout");//…

第十六屆山東省職業院校技能大賽高職組“應用軟件系統開發”賽項樣題

第十六屆山東省職業院校技能大賽 高職組“應用軟件系統開發”賽項樣題 目錄 一.競賽須知 二.競賽任務標題二 模塊一:系統需求分析(25分) 模塊二:軟件系統開發(55分) 模塊三&am…

【APP安卓測試工具】adb(Android Debug Bridge)

1.常見的命令 列出已連接的設備 adb device安裝 adb install <APK文件路徑>卸載 adb uninstall <APK文件路徑>啟動和停止 adb shell am start -n <包名>[/<Activity>]adb shell am force -stop <包名>截屏和錄屏 adb shell screencap <文件路…

cordic 算法學習記錄

參考&#xff1a;b站教學視頻FPGA&#xff1a;Cordic算法介紹與實現_嗶哩嗶哩_bilibili FPGA硬件實現加減法、移位等操作比較簡單&#xff0c;但是實現乘除以及函數計算復雜度高且占用資源多&#xff0c;常見的計算三角函數/平方根的求解方式有①查找表&#xff1a;先把函數對應…

JVM面試連環炮:你準備好迎接挑戰了嗎?

在Java開發領域&#xff0c;JVM面試一直是一個熱門話題。作為一名優秀的開發者&#xff0c;你是否已經準備好迎接這場挑戰了呢&#xff1f;今天&#xff0c;我們就來深度解析一下JVM面試的熱點問題&#xff0c;幫助你更好地應對面試&#xff0c;一舉拿下offer&#xff01; 1、…

Python 使用sphinx生成API文檔

目錄 前言: 項目層級 Python項目docstring規范 Example Google Style Python Docstrings Example NumPy Style Python Docstrings reStructuredText Style 設置代碼docstrings風格(pycharm) 安裝sphinx 創建sphinx文檔項目 配置conf.py文件 編譯代碼為api文檔 編譯…

vim + ctags 跳轉, 查看函數定義

yum install ctags Package ctags-5.8-13.el7.x86_64 already installed and latest version 創建 /home/mzh/pptp-master/tags.sh #!/usr/bin/shWORKDIR/home/mzh/pptp-masterfind ${WORKDIR} -name "*.[c|h]" | xargs ctags -f ${WORKDIR}/tags find /usr/inclu…

final的安全發布

final的安全發布 兩個關鍵字“發布”“安全” 所謂發布通俗一點的理解就是創建一個對象&#xff0c;使這個對象能被當前范圍之外的代碼所使用 比如Object o new Object(); 然后接下來使用對象o 但是對于普通變量的創建&#xff0c;之前分析過&#xff0c;大致分為三個步驟&am…

k8s之身份認證與權限

Kubernetes 中提供了良好的多租戶認證管理機制&#xff0c;如 RBAC、ServiceAccount 還有各種策略等。 通過該文件可以看到已經配置了 RBAC 訪問控制 /usr/lib/systemd/system/kube-apiserver.service 1.1 認證 所有 Kubernetes 集群有兩類用戶&#xff1a;由 Kubernetes 管理的…

mysql數據庫學習筆記(1)

今天開始學mysql數據庫&#xff0c;為什么要學這個呢&#xff0c;因為數據庫可結構化存儲大量的數據信息&#xff0c;方便用戶進行有效的檢索和訪問。數據庫可有效地保持數據信息的一致性、完整性、降低數據冗余。數據庫可滿足應用的共享和安全方面的要求&#xff0c;把數據放在…

java--認識異常、自定義異常

1.異常體系 Error&#xff1a;代表的系統級別錯誤(屬于嚴重問題)&#xff0c;也就是說系統一旦出現問題&#xff0c;sun公司會把這些問題封裝成Error對象給出來&#xff0c;說白了&#xff0c;Error是給sun公司自己用的&#xff0c;不是給我們程序員用的&#xff0c;因此我們開…

MacOS下homebrew的安裝與使用

安裝Homebrew //刪除原來的文件&#xff0c;可以在刪除前查看下Cellar文件夾下已安裝的包,homebrew將工具安裝在這個文件夾下&#xff0c;并在/usr/local/bin下建立連接 sudo -irm -rf /usr/local/Cellar /usr/local/.gi sudo chown -R liudong /usr/local //更新文件屬主為liu…

114. 二叉樹展開為鏈表 --力扣 --JAVA

題目 給你二叉樹的根結點 root &#xff0c;請你將它展開為一個單鏈表&#xff1a; 展開后的單鏈表應該同樣使用 TreeNode &#xff0c;其中 right 子指針指向鏈表中下一個結點&#xff0c;而左子指針始終為 null 。展開后的單鏈表應該與二叉樹 先序遍歷 順序相同。 解題思路 …

通過Ai幫我們寫前端界面設計

現在我要寫一個前端界面&#xff0c;from表單&#xff0c;讓用戶登錄使用的&#xff0c;提交表單之前先分析用戶名和密碼是否填的完成&#xff0c;并且檢查密碼必須滿足 包含大小寫&#xff0c;數字&#xff0c;密碼長度必須在8到20之間&#xff0c;不滿足不可以提交。用戶名必…

ethtool

ethtool ethtool是一個常用的命令行工具&#xff0c;用于配置和查詢以太網接口的驅動程序和硬件參數。它提供了一種簡單的方式來檢查和修改網絡接口的設置&#xff0c;以及獲取與以太網接口相關的統計數據和狀態信息。 ethtool可以執行以下常見的操作&#xff1a; 查詢接口信息…