CSS布局之浮動

網(wǎng)頁布局的核心——就是用 CSS 來擺放盒子旋炒。

CSS 提供了 3 種機制來設(shè)置盒子的擺放位置尤泽,分別是普通流(標(biāo)準(zhǔn)流)、浮動定位巾钉,其中:

  1. 普通流(標(biāo)準(zhǔn)流)
    • 塊級元素會獨占一行翘狱,從上向下順序排列;
      • 常用元素:div砰苍、hr潦匈、p、h1~h6师骗、ul历等、ol、dl辟癌、form寒屯、table
    • 行內(nèi)元素會按照順序,從左到右順序排列黍少,碰到父元素邊緣則自動換行寡夹;
      • 常用元素:span、a厂置、i菩掏、em等
  2. 浮動
    • 讓盒子從普通流中起來,主要作用讓多個塊級盒子一行顯示。
  3. 定位
    • 將盒子在瀏覽器的某一個置——CSS 離不開定位昵济,特別是后面的 js 特效智绸。

什么是浮動(float)

概念:元素的浮動是指設(shè)置了浮動屬性的元素

  1. 脫離標(biāo)準(zhǔn)普通流的控制
  2. 移動到指定位置。

作用

  1. 讓多個盒子(div)水平排列成一行访忿,使得浮動成為布局的重要手段瞧栗。
  2. 可以實現(xiàn)盒子的左右對齊等等..
  3. 浮動最早是用來控制圖片,實現(xiàn)文字環(huán)繞圖片的效果海铆。
  • float 屬性會讓盒子漂浮在標(biāo)準(zhǔn)流的上面迹恐,所以第二個標(biāo)準(zhǔn)流的盒子跑到浮動盒子的底下了。

浮動——漏漏~ 浮動的盒子卧斟,把自己原來的位置漏給下面標(biāo)準(zhǔn)流的盒子殴边,就是不占有原來位置憎茂,是脫離標(biāo)準(zhǔn)流的,我們俗稱 “脫標(biāo)”锤岸。

浮動——特性 float屬性會改變元素display屬性竖幔。

任何元素都可以浮動。浮動元素會生成一個塊級框能耻,而不論它本身是何種元素赏枚。 生成的塊級框和我們前面的行內(nèi)塊極其相似亡驰。

轉(zhuǎn)換為行內(nèi)塊元素晓猛,可以水平顯示,不過 div 之間有間隙凡辱,不方便處理

設(shè)置浮動屬性戒职,可以讓 div 水平排列,并且沒有間隙

注意: 浮動的元素互相貼靠一起的透乾,但是如果父級寬度裝不下這些浮動的盒子洪燥, 多出的盒子會另起一行對齊

1.4 浮動(float)小結(jié)

我們使用浮動的核心目的——讓多個塊級盒子在同一行顯示。 因為這是我們最常見的一種布局方式

float —— 浮漏特

特點 說明
加了浮動的盒子是浮起來的乳乌,漂浮在其他標(biāo)準(zhǔn)流盒子的上面捧韵。
加了浮動的盒子是不占位置的,它原來的位置漏給了標(biāo)準(zhǔn)流的盒子汉操。
特別注意:浮動元素會改變display屬性再来, 類似轉(zhuǎn)換為了行內(nèi)塊,但是元素之間沒有空白縫隙

浮動(float)的應(yīng)用(重要)

浮動和標(biāo)準(zhǔn)流的父盒子搭配

我們知道磷瘤,浮動是脫標(biāo)的芒篷,會影響下面的標(biāo)準(zhǔn)流元素,此時采缚,我們需要給浮動的元素添加一個標(biāo)準(zhǔn)流的父親针炉,這樣,最大化的減小了對其他標(biāo)準(zhǔn)流的影響扳抽。

浮動(float)的擴展

1). 浮動元素與父盒子的關(guān)系

  • 子盒子的浮動參照父盒子對齊
  • 不會與父盒子的邊框重疊篡帕,也不會超過父盒子的內(nèi)邊距

2). 浮動元素與兄弟盒子的關(guān)系

在一個父級盒子中,如果前一個兄弟盒子是:

  • 浮動的贸呢,那么當(dāng)前盒子會與前一個盒子的頂部對齊镰烧;
  • 普通流的,那么當(dāng)前盒子會顯示在前一個兄弟盒子的下方贮尉。

浮動只會影響當(dāng)前的或者是后面的標(biāo)準(zhǔn)流盒子拌滋,不會影響前面的標(biāo)準(zhǔn)流。

建議

如果一個盒子里面有多個子盒子猜谚,如果其中一個盒子浮動了败砂,其他兄弟也應(yīng)該浮動赌渣。防止引起問題

清除浮動

為什么要清除浮動

因為父級盒子很多情況下,不方便給高度昌犹,但是子盒子浮動就不占有位置坚芜,最后父級盒子高度為0,就影響了下面的標(biāo)準(zhǔn)流盒子斜姥。

  • 總結(jié):
    • 由于浮動元素不再占用原文檔流的位置鸿竖,所以它會對后面的元素排版產(chǎn)生影響
    • 準(zhǔn)確地說,并不是清除浮動铸敏,而是清除浮動后造成的影響

清除浮動本質(zhì)

? 清除浮動主要為了解決父級元素因為子級浮動引起內(nèi)部高度為0 的問題缚忧。清除浮動之后, 父級就會根據(jù)浮動的子盒子自動檢測高度杈笔。父級有了高度闪水,就不會影響下面的標(biāo)準(zhǔn)流了

清除浮動的方法

在CSS中,clear屬性用于清除浮動蒙具。

  • 語法:
選擇器{clear:屬性值;}   clear 清除  
屬性值 描述
left 不允許左側(cè)有浮動元素(清除左側(cè)浮動的影響)
right 不允許右側(cè)有浮動元素(清除右側(cè)浮動的影響)
both 同時清除左右兩側(cè)浮動的影響

但是我們實際工作中球榆, 幾乎只用 clear: both;

1).額外標(biāo)簽法(隔墻法)

是W3C推薦的做法是通過在浮動元素末尾添加一個空的標(biāo)簽例如 <div style=”clear:both”></div>,或則其他標(biāo)簽br等亦可禁筏。
  • 優(yōu)點: 通俗易懂持钉,書寫方便
  • 缺點: 添加許多無意義的標(biāo)簽,結(jié)構(gòu)化較差篱昔。

2).父級添加overflow屬性方法

可以給父級添加: overflow為 hidden| auto| scroll  都可以實現(xiàn)每强。

優(yōu)點: 代碼簡潔

缺點: 內(nèi)容增多時候容易造成不會自動換行導(dǎo)致內(nèi)容被隱藏掉,無法顯示需要溢出的元素旱爆。

3).使用after偽元素清除浮動

:after 方式為空元素額外標(biāo)簽法的升級版舀射,好處是不用單獨加標(biāo)簽了

使用方法:

 .clearfix:after {  content: ""; display: block; height: 0; clear: both; visibility: hidden;  }   

 .clearfix {*zoom: 1;}   /* IE6、7 專有 */
  • 優(yōu)點: 符合閉合浮動思想 結(jié)構(gòu)語義化正確
  • 缺點: 由于IE6-7不支持:after怀伦,使用 zoom:1觸發(fā) hasLayout脆烟。
  • 代表網(wǎng)站: 百度、淘寶網(wǎng)房待、網(wǎng)易等

4).使用雙偽元素清除浮動

使用方法:

.clearfix:before,.clearfix:after { 
  content:"";
  display:table; 
}
.clearfix:after {
 clear:both;
}
.clearfix {
  *zoom:1;
}
  • 優(yōu)點: 代碼更簡潔

  • 缺點: 由于IE6-7不支持:after邢羔,使用 zoom:1觸發(fā) hasLayout。

  • 代表網(wǎng)站: 小米桑孩、騰訊等

清除浮動總結(jié)

  1. 父級沒高度
  2. 子盒子浮動了
  3. 影響下面布局了拜鹤,我們就應(yīng)該清除浮動了。
清除浮動的方式 優(yōu)點 缺點
額外標(biāo)簽法(隔墻法) 通俗易懂流椒,書寫方便 添加許多無意義的標(biāo)簽敏簿,結(jié)構(gòu)化較差。
父級overflow:hidden; 書寫簡單 溢出隱藏
父級after偽元素 結(jié)構(gòu)語義化正確 由于IE6-7不支持:after,兼容性問題
父級雙偽元素 結(jié)構(gòu)語義化正確 由于IE6-7不支持:after惯裕,兼容性問題
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末温数,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蜻势,更是在濱河造成了極大的恐慌撑刺,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件握玛,死亡現(xiàn)場離奇詭異够傍,居然都是意外死亡,警方通過查閱死者的電腦和手機挠铲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門冕屯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人市殷,你說我怎么就攤上這事愕撰。” “怎么了醋寝?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長带迟。 經(jīng)常有香客問我音羞,道長,這世上最難降的妖魔是什么仓犬? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任嗅绰,我火速辦了婚禮,結(jié)果婚禮上搀继,老公的妹妹穿的比我還像新娘窘面。我一直安慰自己,他們只是感情好叽躯,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布财边。 她就那樣靜靜地躺著,像睡著了一般点骑。 火紅的嫁衣襯著肌膚如雪酣难。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天黑滴,我揣著相機與錄音憨募,去河邊找鬼。 笑死袁辈,一個胖子當(dāng)著我的面吹牛菜谣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼尾膊,長吁一口氣:“原來是場噩夢啊……” “哼甘磨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起眯停,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤济舆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后莺债,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滋觉,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年齐邦,在試婚紗的時候發(fā)現(xiàn)自己被綠了椎侠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡措拇,死狀恐怖我纪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丐吓,我是刑警寧澤浅悉,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站券犁,受9級特大地震影響术健,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜粘衬,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一荞估、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧稚新,春花似錦勘伺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至笤妙,卻和暖如春冒掌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蹲盘。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工股毫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人召衔。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓铃诬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子趣席,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355