css 浮動和清除浮動

来源:http://www.cnblogs.com/z937741304/archive/2017/10/06/7630365.html
-Advertisement-
Play Games

在寫頁面佈局的過程中,浮動是大家經常用的屬性。在好多的排版佈局中都是用的的浮動比如說下麵這些地方都是應用到了浮動。 在我學習浮動的時候可是熬壞了腦筋,在這裡我分享一下我對浮動這塊知識的總結。 一、浮動的定義 使元素脫離文檔流,按照指定的方向(左或右發生移動),直到它的外邊緣碰到包含框或另一個浮動框的 ...


在寫頁面佈局的過程中,浮動是大家經常用的屬性。在好多的排版佈局中都是用的的浮動比如說下麵這些地方都是應用到了浮動。

 

 

 

在我學習浮動的時候可是熬壞了腦筋,在這裡我分享一下我對浮動這塊知識的總結。

一、浮動的定義

  使元素脫離文檔流,按照指定的方向(左或右發生移動),直到它的外邊緣碰到包含框或另一個浮動框的邊框為止。

  說到脫離文檔流要說一下什麼是文檔流,文檔流是是文檔中可顯示對象在排列時所占用的位置/空間,而脫離文檔流就是在頁面中不占位置了。

二、屬性

  float:left; 左浮動

  float:right;右浮動

三、浮動的情況

  下麵我就用這個佈局為例子來講解浮動,css樣式外面的div給了一個高度,其他的不多說。

 

    

 

1.左浮動float:left;

  給裡面的三個p標簽 float:left; 屬性,看一下是什麼情況的。我們都知道塊級標簽會預設占據一行的所以他們是一排一個展示的,但是看下圖會發現他們按照順序排列成一排了。

 

 

2.右浮動 float:right;

  同樣的我們給box中的p標簽一個 float:right; 屬性。他們會按照順序排到右邊去了。

3.這一次我們只給第二個p浮動來看看會發生什麼情況,這時候你會發現,3不見了,他其實在2的下麵,我給3一個寬一點的寬度。會發現32的下麵。

 

4.3一個浮動

  他會沒有什麼變化,因為浮動只會影響他後面的元素,如果上面的元素不浮動,他也不會上去的

   

 

5.把外面的div寬度變小一些,p浮動

  如果父元素太窄,無法容納所有的浮動元素,無法容納的浮動元素會換行顯示。

     

 

6.浮動的特殊情況

  以換行的那個元素為基準,如果有浮動元素的高度大於換行的那個元素,那麼當換行元素換行時會被高的那個元素“卡住”。初始樣式是左圖.

   

 

 

7.浮動對文字的影響 p標簽浮動

  浮動框只會占據自己的位置,使文字可以圍繞浮動框顯示

    

 

 

四、浮動之後有很多特性

  1.塊級元素可以橫排顯示

  2.行內元素可以設置寬度和高度

  3.元素沒有設置寬度和高度時,寬度為內容撐開寬

  4.支持margin

  5.脫離文檔流

  6.提升半層級

  問題:不支持margin:auto;

五、清除浮動

  1. 為什麼要清除浮動?

前面提到了我給了外面的div一個高度,這裡我們不給他高度,讓裡面的p浮動看看會發生什麼情況。

未浮動

     

 

浮動之後

        

 

  我們會發現子元素浮動會造成父級盒子高度坍塌,這樣如果下麵在進行繼續佈局的話會使頁面佈局錯亂,(下圖中黃色的盒子是nav下的div)如果想要繼續佈局就要清除浮動了,這裡我介紹幾種清除浮動的方法。

  標簽和樣子如下兩幅圖

            

 

      

 

父級的做法

  1. 父級 緊鄰兄弟法

    給nav一個clearboth屬性,下圖會發現可以正常顯示

    缺點:只是讓後面的元素正常顯示,並沒有撐開box的高度

      

 

  2.父級給高度

    box給高度,可以正常顯示。

    缺點:一般都是元素內容撐開高度,拓展性不好。     

 

   3.父級元素 display:inline-block;

    boxdisplay:inline-block;可以正常顯示

    缺點:父級盒子margin:auto;失效,會發現上部分和下麵黃色中間有間隙。

      

 

  4.父級overflow:hidden;

    可以正常顯示

    缺點:需要配合寬度

          

 

   子元素

    1.要加給浮動元素末尾的後面再添加一個元素。加上一個clear屬性

      可以正常顯示

      缺點:隨意的添加一個空元素,不符合代碼規範

             

 

   

 

  2.恭喜你看到了這裡,在這裡我介紹一種當今最主流的清除浮動的方法。

    after偽元素清除浮動,添加給box,依舊可以正常顯示,不發圖了。

    clearfix:after{content:””; display:block; clear:both;}

 

以上就是我對浮動和清除浮動的知識的見解和總結,如有不足之處,希望各位可以指正,謝謝!

 

 

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.2 服務治理和架構 我在矽谷那段時間,每天早上都單獨要一份omelet,就是美式煎蛋。2個雞蛋和黃油是必選的,另外需要自己在需要放的材料上打鉤,有多種芝士可選,另外還可以勾選洋蔥,蘑菇,培根,西蘭花等。 回國之後,經常也會自己這樣做早餐,只是總會在擺盤時,用圓火腿斜切兩片,然後將這這個片再四六分 ...
  • 您正工作於大型複雜的單體應用程式上,這是相當不錯的機會。您開發和部署應用程式的日常經歷是緩慢而痛苦的。微服務似乎是一個遙不可及的天堂。幸運的是,有一些戰略可以用來逃離單體地獄。在本文中,我將描述如何將單體應用程式逐漸重構為一組微服務。 ...
  • 本來應一個可愛帥氣的編輯之邀,要寫一本書《靜兒的互聯網服務治理私房菜》。想選服務治理的題材,想急著簽協議就寫了一個很匆忙的目錄和例章。寫書本是計划了很久的一件事情。現在反而有些猶豫了。我是不是應該把腳步放慢一些,再穩一些。我是不是應該自己先寫了一部分,再考慮簽約出版的事情。要做的事情太多了,比如:家 ...
  • 大部分網頁預設的背景色為白色,個人感覺比較刺眼,於是寫了個JS的腳本去改變body部分的背景色,代碼如下: 代碼比較簡單,直接創建了一個body上的css樣式規則,然後添加到head里,如果網頁內容變化或者非同步更新等使樣式被移除時,通過事件監聽機制重新添加到head上。 由於只是簡單地改變了body ...
  • 1 function removeClass(obj, aClass) { 2 var re = new RegExp('\\b' + aClass + '\\b'); 3 if (obj.className != '') { 4 5 if (re.test(obj.className)) { 6 ...
  • 1.onselectstart 這個事件主要是用於禁止選擇網頁中的文字。代碼為: document.onselectstart =function(){ return false; } 另外ff/opera不支持此事件,ff可以用css控制:css: body { -moz-user-select: ...
  • 逢10月小長假,幾天不敲鍵盤,渾身難受。也是有時間分享一下自己遇到的css問題。先說一下什麼css hack 簡單介紹一下css hack: 定義: 一般都是利用各瀏覽器的支持CSS的能力和BUG來進行的,可以分為能力選擇和怪癖選擇(BUG)。 能力通常是指瀏覽器對CSS特性的支持程度,而怪癖是指瀏 ...
  • 這篇文章的題材相信已經有很多人寫過,如果你對Angular組件之間的交互瞭如指掌的話,那麼麻煩各位大神多多指教,如果你對Angular組件之間的交互一知半解,或者全然不知,那麼相信這篇文章對一些代碼的解讀對你會有所幫助! ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...