首頁 web前端 css教學 css浮動是什麼意思? css浮動的原理以及css清除浮動的方法(附程式碼)

css浮動是什麼意思? css浮動的原理以及css清除浮動的方法(附程式碼)

Aug 07, 2018 pm 04:49 PM
css

css浮動是什麼意思?所謂css浮動就是浮動元素會脫離文檔的普通流,根據float的值向左或向右移動,直到它的外邊界碰到父元素的內邊界或另一個浮動元素的外邊界為止。由於浮動框不在文檔的普通流中,所以文檔的普通流中的塊級元素表現得就像浮動元素不存在一樣。接下來,本文講跟大家說一說css浮動的原理以及css清除浮動的方法。

浮動影響

浮動元素會造成父元素塌陷

當給元素設定float之後,元素脫離文檔流,父元素沒有設定height ,造成塌陷。

<div>
    <div></div>
</div>
.super{
    border:1px solid red;
}

.sub{
  float: left;
  background: green;
  border: 1px solid yellow;
  width: 100px;
  height: 100px;
}

css浮動是什麼意思? css浮動的原理以及css清除浮動的方法(附程式碼)

浮動元素的左(右)外邊界不能超出其父元素的左(右)內邊界。

在不設定margin為負值和父元素還有剩餘空間的情況下,浮動元素的外邊界(margin)不會超出父元素的內邊界(padding)。

<div>
    <div></div>
    <div></div>
</div> 
.super{
    margin: 0 auto;
    padding: 10px;
    border:1px solid yellow;
     width: 300px;
}

.super:after{
  clear: both;
  content: '';
  display: block;
}

.sub1{
  float: left;
  background: pink;
  border: 1px solid green;
  width: 100px;
  height: 100px;
}

.sub2{
  float: right;
  background: pink;
  border: 1px solid green;
  width: 100px;
  height: 100px;
}

css浮動是什麼意思? css浮動的原理以及css清除浮動的方法(附程式碼)

浮動元素不會重疊。

這個也是在margin不會為負值和父元素還有剩餘空間的條件下適用的。
這個是我對《CSS權威指南》中浮動這一章節中規則二和規則三的理解,以下是原文。

2、The left (or right) outer edge of a floated element must be to the right (or left) of the right (left) outer edge of a left-floating (或 right-floating) element that occurs earlier in the document’s source, unless the top of the later element is below the bottom of the former.

有道翻譯:

2、浮動元素的左(或右)外緣必須位於右(左)的右(左)左側浮動(或右浮動)元素的外邊緣,該元素在文檔的源代碼中較早出現,除非後面的元素的頂部在下面

3.The right outer edge of a left-floating element may not be to the right of the left outer edge of any right-floating element to its right. The left outer edge of a right- floating element may not be to the left of the right outer edge of any left-floating element to its left.

有道翻譯:

3、左浮動元素的右外緣可能不是右浮動元素的左外邊緣的右側。一個右浮動元素的左外緣可能不在左邊任何左浮動元素的右外緣的左邊。

這兩個規則是保證兩個浮動元素不重疊的基礎。

表現為當一個浮動元素往左(右)靠的時候,在這個元素左(右)邊已經存在一個浮動元素,他們不會重疊,後來者緊挨著先來者排列。如果浮動元素們的總寬度已經超過父元素的寬度,浮動元素之間也不會重疊,依照HTML結構的順序,從在一行排列不下的浮動元素開始會移動到下一行。

<div class="super super1">
    <div class="sub1"></div>哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
    <div class="sub2"></div>
</div>

<div class="super super2">
    <div class="sub1">float:left</div>
    <div class="sub2">float:right</div>
</div>
.super {
    float: left;
    margin: 10px;
    padding: 10px;
    border: 1px solid blue;
    width: 300px;
}

.super1 .sub1{
    float: left;
    background: pink;
    border: 1px solid red;
    width: 100px;
    height: 100px;
}

.super1 .sub2{
    float: left;
    background: pink;
    border: 1px solid red;
    width: 100px;
    height: 100px;
}

.super2 .sub1{
    float: left;
    background: pink;
    border: 1px solid red;
    width: 200px;
    height: 100px;
}

.super2 .sub2{
    float: right;
    background: pink;
    border: 1px solid red;
    width: 200px;
    height: 100px;
}

效果如下:

css浮動是什麼意思? css浮動的原理以及css清除浮動的方法(附程式碼)

#浮動元素的頂端不能比其父元素的內頂端更高,不能比之前出現的浮動元素頂端高。

這個規則也是在margin-top不為負值的情況下成立。

父元素的頂端會限制浮動元素,防止一直浮動到頁面頂端。
對於下圖右邊的例子,sub2在sub1下面,sub1右邊的空間已經不足以容納sub2,但是足夠容納sub3,而sub3沒有上浮,那是因為他的的頂端就不能超過sub2的頂端,這個例子足以印證浮動元素的頂端不能比先前出現的浮動元素頂端高。

<div class="super">
    <div class="sub sub0"></div>
</div>

<div class="super">
    <div class="sub sub1">sub1</div>
    <div class="sub sub2">sub2</div>
    <div class="sub sub3">sub3</div>
</div>
.super {
    float: left;
    margin: 10px;
    padding: 10px;
    border: 1px solid blue;
    width: 320px;
}

.sub {
    background: pink;
    border: 1px solid red;
    height: 100px;
}

.sub0 {
    float: left;
    width: 100px;
}

.sub1 {
    float: left;
    width: 200px;
}

.sub2 {
    float: left;
    width: 150px;
}

.sub3{
    float: right;
    width: 50px;
}

效果如下:

css浮動是什麼意思? css浮動的原理以及css清除浮動的方法(附程式碼)

#清除浮動

清除浮動的目的是為了解決高度塌陷的問題,撐開浮動父元素。常用的一般有幾種方法:

增加一個樣式為clear:both的空標籤

<p   style="max-width:90%"></p>

把上面這句標籤放到浮動元素的父元素的最後。

原理:clear會在元素的margin-top之上增加一個清除區域(clearance),這個區域會在元素的margin-top上增加額外間隔,並且不允許浮動元素進入這個區域。

優點:方便,相容性強。

缺點:多出許多無意義的標籤,增加維護成本,而且稍不注意中間多了個空格會產生一段空白高度。

父元素設定浮動

優點:簡單,程式碼少,瀏覽器支援好。
缺點:父級使用浮動之後,浮動造成的影響仍舊存在,並且不可能父級往上一級級都使用浮動。

使用overflow、zoom屬性

#
.fix{
    overflow:hidden(auto、scroll); 
    zoom:1;
}

优点:代码简洁,兼容性好,不产生多余标签。

缺点:设置该fix类的标签的内容超出该标签的时候会被隐藏(或产生滚动条)。

父元素设置浮动

优点:简单,代码少,浏览器支持好。
缺点:父级使用浮动之后,浮动造成的影响仍旧存在,并且不可能父级往上一级级都使用浮动。

父元素设置position

原理:在position的值不为relativestatic的情况下,会形成BFC。

这种方式在父元素原本就需要设置positionfixed或者absolute的时候可以优先采用。

优点:简单,代码少,浏览器支持好。
缺点:改变父元素布局,影响整体布局。

使用:after

.fix:after{
    display:block; 
    content:&#39;&#39;; 
    clear:both; 
}

原理类似添加新的标签然后设置clear:both;,但使用伪类的方法没有多余标签。

优点:代码简洁,兼容性好,不产生多余标签。

以上方法中,第一种增加一个样式为clear:both的空标签的方法不建议使用,会增加无意义标签,其他设置父元素浮动,改变父元素position、overflow的方法依情况而定,如果父元素本身就有这方面的样式需求,那很合适,如果没有的话还是采用最后一种伪元素的:after的方式最为常见。

相关文章推荐:

CSS清除浮动_清除float浮动_html/css_WEB-ITnose

Css3之基础-8 Css 浮动(定位,浮动定位)_html/css_WEB-ITnose

CSS中Float(浮动)相关技巧文章_经验交流

CSS里怎么清除浮动

以上是css浮動是什麼意思? css浮動的原理以及css清除浮動的方法(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Laravel 教程
1602
29
PHP教程
1504
276
如何使用CSS Backdrop-Filter屬性? 如何使用CSS Backdrop-Filter屬性? Aug 02, 2025 pm 12:11 PM

backdrop-filter用於對元素背後的內容應用視覺效果,1.使用backdrop-filter:blur(10px)等語法實現毛玻璃效果;2.支持blur、brightness、contrast等多種濾鏡函數並可疊加;3.常用於玻璃態卡片設計,需確保元素與背景重疊;4.現代瀏覽器支持良好,可用@supports提供降級方案;5.避免過大模糊值和頻繁重繪以優化性能,該屬性僅在元素背後有內容時生效。

什麼是用戶代理樣式表? 什麼是用戶代理樣式表? Jul 31, 2025 am 10:35 AM

用戶代理樣式表是瀏覽器自動應用的默認CSS樣式,用於確保未添加自定義樣式的HTML元素仍具基本可讀性。它們影響頁面初始外觀,但不同瀏覽器存在差異,可能導致不一致顯示。開發者常通過重置或標準化樣式來解決這一問題。使用開發者工具的“計算”或“樣式”面板可查看默認樣式。常見覆蓋操作包括清除內外邊距、修改鏈接下劃線、調整標題大小及統一按鈕樣式。理解用戶代理樣式有助於提升跨瀏覽器一致性並實現精準佈局控制。

如何在CSS中樣式鏈接? 如何在CSS中樣式鏈接? Jul 29, 2025 am 04:25 AM

鏈接的樣式應通過偽類區分不同狀態,1.使用a:link設置未訪問鏈接樣式,2.a:visited設置已訪問鏈接,3.a:hover設置懸停效果,4.a:active設置點擊時樣式,5.a:focus確保鍵盤可訪問性,始終遵循LVHA順序以避免樣式衝突,可通過添加padding、cursor:pointer和保留或自定義焦點輪廓來提升可用性和可訪問性,還可使用border-bottom或動畫下劃線等自定義視覺效果,最終確保鏈接在所有狀態下均有良好用戶體驗和可訪問性。

CSS' Will-Change”屬性最適合什麼? CSS' Will-Change”屬性最適合什麼? Jul 29, 2025 am 01:05 AM

CSS的will-change屬性最佳使用場景是提前告知瀏覽器元素可能發生的變化,以便優化渲染性能,尤其適用於動畫或過渡效果。 ①應在動畫屬性(如transform、opacity或position)發生變化前應用它;②避免過早使用或長期保留,應在變化發生前設置並在完成後移除;③應僅針對必要屬性而非使用will-change:all;④適用於大型滾動動畫、交互式UI組件和復雜SVG/Canvas界面等場景;⑤現代瀏覽器通常能自動優化,因此無需在所有動畫中都使用will-change。正確使用可提升

CSS方面比例屬性是什麼?如何使用它? CSS方面比例屬性是什麼?如何使用它? Aug 04, 2025 pm 04:38 PM

Theaspect-ratioCSSpropertydefinesthewidth-to-heightratioofanelement,ensuringconsistentproportionsinresponsivedesigns.1.Itisapplieddirectlytoelementslikeimages,videos,orcontainersusingsyntaxsuchasaspect-ratio:16/9.2.Commonusecasesincludemaintainingres

如何集中DIV CSS 如何集中DIV CSS Jul 30, 2025 am 05:34 AM

Tocenteradivhorizontally,setawidthandusemargin:0auto.2.Forhorizontalandverticalcentering,useFlexboxwithjustify-content:centerandalign-items:center.3.Alternatively,useCSSGridwithplace-items:center.4.Forolderbrowsers,useabsolutepositioningwithtop:50%,l

如何使用CSS創建彈跳動畫? 如何使用CSS創建彈跳動畫? Aug 02, 2025 am 05:44 AM

Define@keyframesbouncewith0%,100%attranslateY(0)and50%attranslateY(-20px)tocreateabasicbounce.2.Applytheanimationtoanelementusinganimation:bounce0.6sease-in-outinfiniteforsmooth,continuousmotion.3.Forrealism,use@keyframesrealistic-bouncewithscale(1.1

如何在CSS中重疊元素? 如何在CSS中重疊元素? Jul 30, 2025 am 05:43 AM

要實現CSS元素重疊,需使用定位和z-index屬性。 1.使用position和z-index:將元素設置為非static定位(如absolute、relative等),並通過z-index控制堆疊順序,值越大越靠前。 2.常見定位方法:absolute用於精確佈局,relative用於相對偏移並重疊相鄰元素,fixed或sticky用於固定定位的懸浮層。 3.實際示例:通過設置父容器position:relative,子元素position:absolute和不同z-index,可實現卡片重疊效果

See all articles