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

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
CSS包含:為您的項目選擇正確的方法CSS包含:為您的項目選擇正確的方法May 16, 2025 am 12:02 AM

ThebestmethodforincludingCSSdependsonprojectsizeandcomplexity:1)Forlargerprojects,useexternalCSSforbettermaintainabilityandperformance.2)Forsmallerprojects,internalCSSissuitabletoavoidextraHTTPrequests.Alwaysconsidermaintainabilityandperformancewhenc

這不應該發生:對不可能進行故障排除這不應該發生:對不可能進行故障排除May 15, 2025 am 10:32 AM

解決這些不可能的問題之一,這是您從未想過的其他問題的問題。

@KeyFrames vs CSS過渡:有什麼區別?@KeyFrames vs CSS過渡:有什麼區別?May 14, 2025 am 12:01 AM

@keyframesandCSSTransitionsdifferincomplexity:@keyframesallowsfordetailedanimationsequences,whileCSSTransitionshandlesimplestatechanges.UseCSSTransitionsforhovereffectslikebuttoncolorchanges,and@keyframesforintricateanimationslikerotatingspinners.

使用頁面CMS進行靜態站點內容管理使用頁面CMS進行靜態站點內容管理May 13, 2025 am 09:24 AM

我知道,我知道:有大量的內容管理系統選項可用,而我進行了幾個測試,但實際上沒有一個是一個,y'知道嗎?怪異的定價模型,艱難的自定義,有些甚至最終成為整個&

鏈接HTML中CSS文件的最終指南鏈接HTML中CSS文件的最終指南May 13, 2025 am 12:02 AM

鏈接CSS文件到HTML可以通過在HTML的部分使用元素實現。 1)使用標籤鏈接本地CSS文件。 2)多個CSS文件可通過添加多個標籤實現。 3)外部CSS文件使用絕對URL鏈接,如。 4)確保正確使用文件路徑和CSS文件加載順序,優化性能可使用CSS預處理器合併文件。

CSS Flexbox與網格:全面評論CSS Flexbox與網格:全面評論May 12, 2025 am 12:01 AM

選擇Flexbox還是Grid取決於佈局需求:1)Flexbox適用於一維佈局,如導航欄;2)Grid適合二維佈局,如雜誌式佈局。兩者在項目中可結合使用,提升佈局效果。

如何包括CSS文件:方法和最佳實踐如何包括CSS文件:方法和最佳實踐May 11, 2025 am 12:02 AM

包含CSS文件的最佳方法是使用標籤在HTML的部分引入外部CSS文件。 1.使用標籤引入外部CSS文件,如。 2.對於小型調整,可以使用內聯CSS,但應謹慎使用。 3.大型項目可使用CSS預處理器如Sass或Less,通過@import導入其他CSS文件。 4.為了性能,應合併CSS文件並使用CDN,同時使用工具如CSSNano進行壓縮。

Flexbox vs Grid:我應該學習兩者嗎?Flexbox vs Grid:我應該學習兩者嗎?May 10, 2025 am 12:01 AM

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

北端:融合系統,解釋
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
4 週前By尊渡假赌尊渡假赌尊渡假赌
<🎜>掩蓋:探險33-如何獲得完美的色度催化劑
2 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。