首頁 web前端 css教學 CSS中Float(浮動)相關技巧文章_經驗交流

CSS中Float(浮動)相關技巧文章_經驗交流

May 16, 2016 pm 12:07 PM

Float(浮動)概念也許是CSS中最讓人迷惑的一個概念吧。 Float經常被錯誤理解,而且因為將上下文元素全部浮動導致的可讀性、可用性問題備受責難。然而,這些問題的根源並不在於理論本身,而是開發人員以及瀏覽器對理論的解讀所造成的。 

  如果你認真的去讀一下浮動概念,你會發現並不像所見的那麼複雜。大多數問題都是由於舊版的IE帶來的(我只是猜想)。如果你知道這些bug,你就能避免這些問題。 

  讓我們試著去解決這些問題並澄清一些先前使用浮動的誤解。我們參考了成打的相關文章,並選取了最為重要的一些你必須了解的問題。

What You Should Know About Floats 
----------------------------------- -------------------------------------------------- -----------------------

  「關於圖文圍繞的實踐可以追溯到很久很久以前。這也就是為什麼從Netscape1. 1開始這個功能被引入瀏覽器,以及為什麼CSS使用浮動屬性來實現它。'Float(浮動)'這個術語引用自伴隨Netscape1.1一同發布的'Additions to HTML 2.0'文檔,描述一個元素浮動至某一側並停下的表現方式。”

  “浮動元素的定位還是基於正常的文檔流,然後從文檔流中抽出並儘可能遠的移動至左側或者右側。文字內容會圍繞在浮動元素周圍。當一個元素從正常文件流中抽出後,仍然在文檔流中的其他元素將忽略該元素並填補他原先的空間。」 

  「元素浮動後將自動轉為區塊級元素。該元素可以被移到目前行的左側或右側。屬性如下:float: left, float: right or float: none」

  「你應該為所有的浮動元素設為定寬度屬性(除非是<img>元素,因其具有隱含的寬度)。如果不設定寬度,結果將是不可預測的。」

  「舉例來說,浮動元素應該定義寬度屬性,不論是顯式指定的還是隱含的。另外,它會盡可能的水平的填充容器元素,就像非浮動內容那樣,不給其他內容空間以圍繞它們。其次,和正常文檔流中的元素不同,浮動元素的垂直邊距(margin)不會疊加。最後,浮動元素可以和臨近在正常文檔流中塊級元素重疊(譯註:浮動元素不佔任何正常文檔流空間,所以建議不要理解成重疊,而是騰空浮動的概念。)。

  「首先我們要牢記的一件事情是,浮動元素只能浮動至左側或右側,沒有浮動至中間一說,這是很多新手容易範的錯誤。記住,最基本的規則,浮動元素只能浮動至兩側。」 

  「當我們讓一個元素浮動,它會往右或往左浮動直至遇到容器的邊緣。如果我們向同一方向再浮動一個元素,它會浮動直到碰到前一個浮動元素的邊緣。如果我們浮動更多的元素,他們將一個挨一個排列,但不久就會空間不足,當該行已經無法容納更多的浮動元素,則下一個浮動元素會換行繼續排列。 ”  

  Containing blocks or containing boxes:「容器元素是指包含其他子元素的行級或區塊級元素。 。 。 。 ”  

  「當明確指定時,浮動元素垂直位置由它原先在文檔流中的位置決定,頂端與當前行頂端對其。但是在水平方向上,它盡可能遠的向容器元素邊緣移動,但是仍遵循容器元素的填充距離(padding)。同行的行內元素則圍繞著浮動元素排列。 」 

  「由於浮動元素不佔據正常文檔流空間,所以浮動元素前後那些未明確指定位置的塊級元素會佔據浮動元素本來應該處在的位置,就好像它從來不曾存在過。而浮動元素之後的那行會根據浮動元素縮小寬度。浮動元素之前的元素則會重新被排列,佔據獨立的一行。 (譯註:ie 和 ff 在這種情況下的表現不盡相同)」 

  「如果當前行的水平方向上沒有足夠的空間容納浮動元素,則向下一行,直至有能容納該元素的行。 ” 

  「任何浮動元素都不可能超過原來所處文檔留位置的上邊界。浮動元素的頂端必定和當前行頂端對齊(或在沒有當前行元素時和前一個區塊級元素底部邊緣對齊)。 」

  「想要真正理解浮動理論,你必須明白在CSS中什麼是行 (line box)。不幸的是,為了解釋什麼是行,你必須先明白什麼是行級元素。行級元素指的是那些非區塊級元素,例如<em>而行是一個邏輯上的概念,是一個虛擬的矩形,包含了組成該行的所有行級元素,其高度至少等於這些行級元素中最高的那個。 」 

  「如果我們將Div中所有的列都加上 float: left 它們會挨個向左排列,如果我們希望在頁面底部有一個頁腳,並不需要一個最長的列,只要加上 clear: both 就可以了」

  「使用浮動元素包含浮動元素這樣的佈局方式有一個潛在的缺點,即你的頁面是否能夠一直保持一致的展現效果將取決於瀏覽器的實現是否保持一致。特別是當浮動元素是一個更複雜的佈局中的一部分的話,將變得更加不堪一擊。 」

Clearing the floats 
------------------------------------- -------------------------------------------------- ---------------------

  「浮動元素之後的元素會自動圍繞該浮動元素。如果你不希望這樣,你可以為這些元素應用‘clear'屬性。此屬性有4種設定值:clear: left, clear: right, clear: both or clear: none」

  有許多技巧可以做到清除浮動元素,但不引入額外的無語義標籤。下面3種是比較常見的做法: a) 將容器元素一起浮動 b) 在容器元素上使用 overflow: hidden c) 使用:after這樣的css偽類。 

  「插入一個清理元素是使容器正確包裹所有浮動元素的標準做法,這樣做具有將容器底部邊緣'拖拉'以包裹所含元素的效果。 ” 

  「對於基於浮動設計的佈局來說,一個常見的問題是浮動元素的容器不會自動伸展來包含浮動元素。如果你希望在所有的浮動元素的外部加上邊框(例如,在容器元素上加上邊框),這樣你必須顯示的命令瀏覽器來伸展容器。你可以是用overflow method方法。 」 

  使用:after 想像一下我們使用:after來插入一個點號,並且設定它的屬性{clear: both;}。這就是所有你需要做的事情,但是沒有人會接受容器底部有那麼一絲空隙,所以我們還要設定{height: 0;} 和 {visibility: hidden;} 來確保嚴絲合縫。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

使用GraphQL緩存 使用GraphQL緩存 Mar 19, 2025 am 09:36 AM

如果您最近開始使用GraphQL或審查了其優點和缺點,那麼您毫無疑問聽到了諸如“ GraphQl不支持緩存”或

展示,不要說 展示,不要說 Mar 16, 2025 am 11:49 AM

您花多少時間為網站設計內容演示文稿?當您撰寫新的博客文章或創建新頁面時,您是在考慮

使用Redwood.js和Fauna構建以太坊應用 使用Redwood.js和Fauna構建以太坊應用 Mar 28, 2025 am 09:18 AM

隨著最近比特幣價格超過20k美元的攀升,最近打破了3萬美元,我認為值得深入研究創建以太坊

用高架創建自己的野蠻人 用高架創建自己的野蠻人 Mar 18, 2025 am 11:23 AM

無論您是開發人員的哪個階段,我們完成的任務(無論大小)都會對我們的個人和專業成長產生巨大影響。

VUE 3 VUE 3 Apr 02, 2025 pm 06:32 PM

它的出局!恭喜Vue團隊完成了完成,我知道這是一項巨大的努力,而且很長時間。所有新文檔也是如此。

在CI/CD上有點 在CI/CD上有點 Apr 02, 2025 pm 06:21 PM

我說的“網站”比“移動應用程序”更合適,但我喜歡Max Lynch的框架:

您可以從瀏覽器獲得有效的CSS屬性值嗎? 您可以從瀏覽器獲得有效的CSS屬性值嗎? Apr 02, 2025 pm 06:17 PM

我有人寫了這個非常合法的問題。 Lea只是在博客上介紹瞭如何從瀏覽器中獲得有效的CSS屬性。那樣的是這樣。

讓我們使用(x,x,x,x)來談論特殊性 讓我們使用(x,x,x,x)來談論特殊性 Mar 24, 2025 am 10:37 AM

前幾天我只是和埃里克·邁耶(Eric Meyer)聊天,我想起了我成長時代的埃里克·邁耶(Eric Meyer)的故事。我寫了一篇有關CSS特異性的博客文章,以及

See all articles