首頁 >web前端 >css教學 >什麼是浮動?css清除浮動的原理

什麼是浮動?css清除浮動的原理

不言
不言原創
2018-08-01 15:24:232183瀏覽

這篇文章給大家介紹的內容是關於什麼是浮動?css清除浮動的原理(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

最近學習css發現了高度塌陷時候要清除浮動,為了理解清楚浮動原理,網上找了不少資料,發現都寫的不是很清楚,而且都是一模一樣的內容,我在里分享我對清楚浮動原理的理解,

如果你已經很了解什麼是浮動#浮動的效果你可以直接跳到三.如何清除浮動(重點)閱讀

#一.什麼是浮動##首先我們需要知道定位
元素在頁面中的位置就是定位,解決問題之前我們先來了解下幾種定位方式

1、普通流定位static(預設方式)   普通流定位,又稱為文件流定位,是頁面元素的預設定位方式
  頁面中的區塊級元素:按照從上到下的方式逐個排列
  頁面中的行內元素:按照從左到右的方式逐個排列
  但是如何讓多個區塊級元素在一行內顯示?
  這裡就引出了浮動定位

2、浮動定位float   float屬性取值為left/ right
  這個屬性原本不是用來佈局的,而是用來做文字環繞的,但是後來人們發現做佈局也不錯,就一直這麼做了,甚至有些時候都忘了用他做文字環繞

3、相對定位relative   元素會相對於它原來的位置偏移某個距離,改變元素位置後,元素原本的空間依然會被保留
  屬性:position
  取值:relative
  配合偏移屬性(top/right/bottom/left)實現位置的改變

4、絕對定位absolute 如果元素被設定為絕對定位的話,將具備以下幾個特徵
  1、脫離文檔流-不佔據頁面空間
  2、透過偏移屬性固定元素位置
  3、相對於最近的已定位的祖先元素實現位置固定
  4、如果沒有已定位祖先元素,那麼就相對於最初的包含塊(body,html)去實現位置的固定
  屬性:position
  取值:absolute
  匹配偏移屬性(top/right/bottom/left)實作位置的固定

5、固定定位fixed   將元素固定在頁面的某個位置處,不會隨著捲軸而發生位置移動
  屬性:position
  取值:fixed
  配合偏移屬性(top/right/bottom/left)實作位置的固定

二.浮動的效果  
浮動之後會怎麼樣?   1、浮動定位元素會被排除在文檔流之外-脫離文檔流(不佔據頁面空間),其餘的元素要上前補位
  2、浮動元素會停靠在父元素的左邊或右邊,或停靠在其他已浮動元素的邊緣上(元素只能在當前所在行浮動)
  3、浮動元素依然位於父元素之內
  4、浮動元素處理的問題-解決多個區塊級元素在一行內顯示的問題
注意
  1、一行內,顯示不下所有的已浮動元素時,最後一個將換行
  2、元素一旦浮動起來之後,那麼寬度將變成自適應(寬度由內容決定)
  3、元素一旦浮動起來之後,那麼就將變成塊級元素,尤其對行內元素,影響最大
  塊級元素:允許修改尺寸
行內元素:不允許修改尺寸
4、文本,行內元素,行內塊元素時採用環繞的方式來排列的,是不會被浮動元素壓在底下的,會巧妙的避開浮動元素
浮動之後會有什麼樣的影響?
  由於浮動元素會脫離文件流,所以導致不佔據頁面空間,所以會對父元素高度帶來一定影響。如果一個元素中包含的元素全部是浮動元素,那麼該元素高度將變成0(高度塌陷)

#三.如何清除浮動(重點)

解決方案及原理分析

網路上有很多種方法,我這裡只介紹一個非常好用的方法,設定class名為clearfix

原理:如果子元素全部浮動,父元素就會塌陷,所以在所有浮動子元素後添加一個沒有浮動元素把父元素撐起來,這個元素找不到、不佔據空間,不能讓它裡面有內容,有內容也要隱藏

.clearfix:after{content:'.';
          clear:both;
          display:block;
          height:0;
          overflow:hidden;
          visibility:hidden;
        }.clearfix:after{zoom:1;}/*解决IE的问题*/
//visibility:hidden;隐藏元素,但是位置留着
//display:none;隐藏元素,不占据空间,彻底隐藏
//after:伪对象选择符

相關文章推薦:

CSS中transform-origin屬性是做什麼的? transform-origin屬性的作用#

實例講解如何用CSS語言創作一條閃電連接線

#

以上是什麼是浮動?css清除浮動的原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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