探究浮動(dòng)

最近研究清除浮動(dòng)和布局相關(guān)的問題,感覺概念很多很雜松忍,而且這些東西經(jīng)常用到潭枣,今天才有時(shí)間來好好整理一下不懂的和懂得,來把他們一起結(jié)合起來看逃魄。

浮動(dòng)元素與absolute
了解下float的起源和現(xiàn)狀
浮動(dòng)早期是用來文字環(huán)繞的荤西,文字環(huán)繞圖片。

至于為什么浮動(dòng)能做自適應(yīng),環(huán)繞圖片?
這里我們可以看看張鑫旭博客的例子邪锌,當(dāng)圖片和文字排列在一起的時(shí)候勉躺,他們自我形成了很多l(xiāng)ine box,而利用浮動(dòng)就能破壞這些line box觅丰,具體參見css兩種模型饵溅,其實(shí)歸根結(jié)底文字環(huán)繞的原理也是破壞這些line box。所以當(dāng)我們設(shè)置float left的時(shí)候會(huì)碰到一個(gè)常見的問題妇萄,那就是高度塌陷的問題蜕企,父元素并沒有了高度,因?yàn)楦?dòng)的元素并沒有高度冠句,所以父元素沒高度轻掩。這時(shí)候清除浮動(dòng)就派上用場了∨车祝可以說我們是一邊享受著浮動(dòng)帶給我們的便利唇牧,一邊還要承擔(dān)它的后果,只是因?yàn)槲覀兪褂玫膱鼍坝袉栴}聚唐,那么問題來了丐重,有沒有一勞永逸的辦法呢。

css兩種模型
在目前的css世界中杆查,所有的高度都是由兩個(gè)css模型產(chǎn)生的扮惦,一個(gè)是box盒狀模型,對應(yīng)css為“height+padding+margin”,另一個(gè)是line box模型亲桦,對象樣式為line-height崖蜜。前者的height屬性分為明顯的height值和隱藏的height值,所謂隱藏的height值是指圖片的高度客峭,一旦載入一張圖片纳猪,其內(nèi)在的height值就會(huì)起作用,即使看不到"height“這個(gè)詞桃笙。而后者針對于文字等這類inline boxes的元素(圖片也屬于inline boxes,但其height比line-height作用更兇猛氏堤,故其inline boxes的高度就等于其自身的高度,對line-height無反應(yīng))搏明,inline boxes的高度直接受line-height控制(改變line-height文字拉開或重疊就是這個(gè)原因)鼠锈,而真正的高度表現(xiàn)則是由每行眾多的inline boxes組成的line boxes(等于內(nèi)部最高的inline boxes),而這些line boxes的高度垂直堆疊形成了containing box的高度,也就是我們見到的div或p標(biāo)簽之類的高度星著。所以對于line box模型的元素而言购笆,沒有inline boxes,就沒有高度了,而浮動(dòng)恰恰是將元素的inline boxes破壞了虚循,于是這些元素就沒有高度了同欠。

height與line height
這里額外提到一個(gè)知識(shí)點(diǎn)样傍,關(guān)于line box的heigt與line height,可以看到當(dāng)把文字的line height設(shè)置為0铺遂,沒有了height衫哥,而擁有l(wèi)ine height,文字size設(shè)置為0襟锐,height確實(shí)存在的撤逢,證明決定高度的在于這個(gè)line height,一般來說我們設(shè)置heght與line height一樣即可是垂直居中(實(shí)際并不需要heigt)粮坞,就是這個(gè)道理蚊荣。關(guān)于這兩個(gè)屬性還需提到的就是line height不會(huì)使用haslayout,而height會(huì)使用haslayout,line height能讓文字自適應(yīng)莫杈,而height 是block互例,占滿一行。

為什么文字環(huán)繞圖片不用清除浮動(dòng)筝闹,而布局需要敲霍?
一句話,因?yàn)樵丨h(huán)繞(例如文字)丁存,其自身是含有inline boxes高度的,這是inline水平的元素形成高度的基礎(chǔ)柴我,所以解寝,雖然浮動(dòng)元素沒有高度,但是其周圍環(huán)繞的元素是有高度的艘儒,只要環(huán)繞元素比浮動(dòng)元素高度高聋伦,父標(biāo)簽無高度的問題自然也就沒有了,但是純粹一堆浮動(dòng)元素會(huì)有高度嗎界睁?沒有觉增。

display absolute與float left的比較
兩者區(qū)別在與包裹性,即一個(gè)脫離了文檔流翻斟,而另一個(gè)依然在文檔流中逾礁,還是回到文字包裹圖片,他還是占據(jù)了位置访惜,但是absoulute卻像一個(gè)世外高人嘹履, 與世無爭了。

能與float實(shí)現(xiàn)相同效果的屬性介紹
display inline-block
float left可以看到债热,雖然功能強(qiáng)大砾嫉,但是實(shí)際上它的誕生并不是為了布局的,這里我們可以使用另一種方式display inline-block的方式來進(jìn)行布局窒篱,缺點(diǎn)在于要清除間隙焕刮。

在這里提一下BFC舶沿,我剛?cè)腴T也被這幾個(gè)搞混了,overflow hidden配并,display inline-block括荡,float等等都能實(shí)現(xiàn)浮動(dòng),那到底有何區(qū)別呢荐绝。

BFC元素簡介和基本特性
元素內(nèi)部無論怎么變化不影響外部一汽。BFC元素margin不相互疊加和清除浮動(dòng)都是基于此點(diǎn)。

觸發(fā)BFC條件
float的值不為none低滩。
overflow的值為auto,scroll或hidden召夹。
display的值為table-cell, table-caption, inline-block中的任何一個(gè)。
position的值不為relative和static恕沫。

bfc按我的理解是獨(dú)立出來一個(gè)區(qū)域监憎,這個(gè)區(qū)域只有滿足bfc觸發(fā)條件才會(huì)進(jìn)入,是與普通文檔流互不沖突的一個(gè)區(qū)域婶溯。

參考鏈接
http://www.zhangxinxu.com/wordpress/2010/01/css-float%E6%B5%AE%E5%8A%A8%E7%9A%84%E6%B7%B1%E5%85%A5%E7%A0%94%E7%A9%B6%E3%80%81%E8%AF%A6%E8%A7%A3%E5%8F%8A%E6%8B%93%E5%B1%95%E4%B8%80/

http://www.zhangxinxu.com/wordpress/2009/11/css%E8%A1%8C%E9%AB%98line-height%E7%9A%84%E4%B8%80%E4%BA%9B%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E5%8F%8A%E5%BA%94%E7%94%A8/

http://www.zhangxinxu.com/wordpress/2010/11/%E6%8B%9C%E6%8B%9C%E4%BA%86%E6%B5%AE%E5%8A%A8%E5%B8%83%E5%B1%80-%E5%9F%BA%E4%BA%8Edisplayinline-block%E7%9A%84%E5%88%97%E8%A1%A8%E5%B8%83%E5%B1%80/

http://www.zhangxinxu.com/wordpress/2012/04/inline-block-space-remove-%E5%8E%BB%E9%99%A4%E9%97%B4%E8%B7%9D/

https://www.zhihu.com/question/21985587

http://www.zhangxinxu.com/wordpress/2015/02/css-deep-understand-flow-bfc-column-two-auto-layout/

https://zhuanlan.zhihu.com/p/25321647

https://www.w3.org/TR/CSS2/visuren.html#positioning-scheme

注:按順序觀看最好

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鲸阔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子迄委,更是在濱河造成了極大的恐慌褐筛,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叙身,死亡現(xiàn)場離奇詭異渔扎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)信轿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門晃痴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人财忽,你說我怎么就攤上這事倘核。” “怎么了即彪?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵紧唱,是天一觀的道長。 經(jīng)常有香客問我隶校,道長琼蚯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任惠况,我火速辦了婚禮遭庶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘稠屠。我一直安慰自己峦睡,他們只是感情好翎苫,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著榨了,像睡著了一般煎谍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上龙屉,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天呐粘,我揣著相機(jī)與錄音,去河邊找鬼转捕。 笑死作岖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的五芝。 我是一名探鬼主播痘儡,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼枢步!你這毒婦竟也來了沉删?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤醉途,失蹤者是張志新(化名)和其女友劉穎矾瑰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隘擎,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡殴穴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嵌屎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恍涂,死狀恐怖宝惰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情再沧,我是刑警寧澤尼夺,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站炒瘸,受9級(jí)特大地震影響淤堵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜顷扩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一拐邪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧隘截,春花似錦扎阶、人聲如沸汹胃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽着饥。三九已至,卻和暖如春惰赋,著一層夾襖步出監(jiān)牢的瞬間宰掉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工赁濒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留轨奄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓流部,卻偏偏與公主長得像戚绕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子枝冀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案舞丛? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,756評論 1 92
  • 概念 Formatting context Formatting context 是 W3C CSS2.1 規(guī)范中...
    wonderwander閱讀 762評論 0 1
  • 以下文章是我在網(wǎng)上收集的內(nèi)容,為了記錄自己的學(xué)習(xí)以及為了以后不到處找而記錄下來果漾,如果對你有用球切,請感謝寫這些文章的前...
    DCbryant閱讀 941評論 0 2
  • 1標(biāo)準(zhǔn)的CSS的盒子模型?與低版本IE的盒子模型有什么不同的绒障? CSS盒子模型:由四個(gè)屬性組成的外邊距(margi...
    秦小婕閱讀 1,186評論 0 1
  • 這周每天畫一幅畫已經(jīng)成了習(xí)慣了吨凑,我看到了有一段話,說的真的很好户辱。如果你不想平庸的活一輩子鸵钝,那么總是需要很多勇氣的。...
    向日葵YANG閱讀 200評論 1 1