CSS float + :after的柵格布局分析

在CSS布局中,float是經(jīng)常使用的屬性跪解,使用float屬性可能用的最常見(jiàn)的就是多個(gè)div并排顯示炉旷,在bootstrap中,float屬性也用于柵格布局叉讥。柵格布局中窘行,空間切割為垂直方向相互平行的一系列柵格。在bootstrap中图仓,這些柵格是由div塊元素來(lái)實(shí)現(xiàn)的罐盔,那么要實(shí)現(xiàn)柵格布局,這些div就需要水平排列救崔,bootstrap對(duì)每個(gè)div使用了float屬性:

boostrap柵格樣式

col-md-1 樣式中可以看到惶看,其寬度是根據(jù)列總數(shù)按照百分比規(guī)定的,每個(gè)柵格采用 float:left 浮動(dòng)樣式以讓其并排顯示六孵。其實(shí)float用于并排顯示div并不是固有的寫法纬黎,float的特點(diǎn)在于其脫離文檔流,浮動(dòng)在標(biāo)準(zhǔn)文檔流上方劫窒,但是在其周圍是某些元素的時(shí)候又占據(jù)一定位置本今,其實(shí)float的效果最直接實(shí)現(xiàn)的是word中 “文字環(huán)繞圖片” 的效果:

文字環(huán)繞div

上述效果代碼:

<style type="text/css">    
    .float_div{        
        float: left;        
        background-color: hotpink;        
        width: 20%;        
        height: 100px;    
    }
</style>
<body>
    <div class="float_div">
    </div>
    <p>我是一段文字,我是一段文字,我是一段文字,我是一段文字,我是一段文字</p>
    <p>我是一段文字,我是一段文字,我是一段文字,我是一段文字,我是一段文字</p>
    <p>我是一段文字,我是一段文字,我是一段文字,我是一段文字,我是一段文字</p>
    <p>我是一段文字,我是一段文字,我是一段文字,我是一段文字,我是一段文字,我是一段文字,我是一段文字,我是一段文字</p>
    <p>我是一段文字,我是一段文字,我是一段文字,我是一段文字,我是一段文字,我是一段文字,我是一段文字,我是一段文字</p>
    <p>我是一段文字,我是一段文字,我是一段文字,我是一段文字,我是一段文字,我是一段文字,我是一段文字,我是一段文字</p>
</body>

float應(yīng)用于div水平排列布局確實(shí)有些怪怪的,相關(guān)分析可以參考之前看過(guò)的一篇博客 CSS float浮動(dòng)的深入研究、詳解及拓展(二)

如果用float用作div水平排列诈泼,剛使用的時(shí)候最常見(jiàn)的一個(gè)問(wèn)題就是如下:

<style type="text/css">    
body {        
    margin: 0px;        
    padding: 40px 0px;    
}    
.row {        
    box-sizing: border-box;        
    border: dotted;    
}    
.col-1 {        
    float: left;        
    height: 80px;        
    width: 15%;        
    background-color: pink;    
}
</style>
<body>
    <div class="row">    
        <div class="col-1">float</div>    
        <div class="col-1">float</div>    
        <div class="col-1">float</div>    
        <div class="col-1">float</div>    
        <div class="col-1">float</div>
    </div>
</body>

我們以為效果是這樣:

float布局

但是實(shí)際上懂拾,結(jié)果是這樣:

float布局1

我們?cè)O(shè)置的浮動(dòng)元素根本就不在父元素內(nèi)容區(qū)域中,已經(jīng)全部溢出了铐达。因?yàn)楦冈貎?nèi)容默認(rèn)情況下的高度是子元素最高的高度岖赋,但是子元素都是float元素,子元素脫離了原先的文檔流瓮孙,不參與高度計(jì)算唐断,那么父元素的高度自然就是0。如果父元素后面還有內(nèi)容杭抠,float內(nèi)容會(huì)覆蓋其一部分脸甘,為了清除這個(gè)浮動(dòng)帶來(lái)的不便,需要清除浮動(dòng)偏灿,清除浮動(dòng)現(xiàn)在很多都在使用 :after 偽元素來(lái)幫助實(shí)現(xiàn)丹诀,具體方式如下:

.row:after{
    display: block;
    clear: both;
    content: "";
}

使用 after 偽元素在父元素內(nèi)容區(qū)最后添加一個(gè)空內(nèi)容的塊元素,并設(shè)置塊元素左右都不允許有浮動(dòng)元素翁垂,這樣浮動(dòng)元素又 “回到” 了父元素的內(nèi)容區(qū)域铆遭。

使用 “回到” 的原因就是,其實(shí)采用這種方式沿猜,浮動(dòng)元素其實(shí)并沒(méi)有回到父元素的內(nèi)容區(qū)域中枚荣,只是父元素的內(nèi)容高度和浮動(dòng)元素高度相同而已。當(dāng)塊元素的 clear 屬性設(shè)置了左邊不能有浮動(dòng)元素時(shí)啼肩,那么這個(gè)時(shí)候其左邊如果有浮動(dòng)元素橄妆,這個(gè)元素的位置就會(huì)在浮動(dòng)元素的下方,而不是與浮動(dòng)元素平行祈坠。

clear both塊元素

上面代碼中

.row:after{
    display: block;
    clear: both;
    content: "";
}

偽元素其實(shí)和浮動(dòng)元素不在同一行害碾,但是由于偽元素的內(nèi)容是空的,因此其并不占據(jù)高度颁虐,這個(gè)時(shí)候蛮原,父元素的內(nèi)容高度就變成了和浮動(dòng)元素高度相同,如果把偽元素的高度手動(dòng)設(shè)置后(上一幅圖)另绩,就可以很清楚地看到效果。并且由于設(shè)置了左右都不允許有浮動(dòng)元素花嘶,父元素之后如果還有其他浮動(dòng)元素笋籽,也不會(huì)和父元素中的子元素平行排列。目前這還是很方便的一種方式椭员。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末车海,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侍芝,老刑警劉巖研铆,帶你破解...
    沈念sama閱讀 222,946評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異州叠,居然都是意外死亡棵红,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門咧栗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)逆甜,“玉大人,你說(shuō)我怎么就攤上這事致板〗簧罚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,716評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵斟或,是天一觀的道長(zhǎng)素征。 經(jīng)常有香客問(wèn)我,道長(zhǎng)萝挤,這世上最難降的妖魔是什么御毅? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,222評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮平斩,結(jié)果婚禮上亚享,老公的妹妹穿的比我還像新娘。我一直安慰自己绘面,他們只是感情好欺税,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著揭璃,像睡著了一般晚凿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘦馍,一...
    開(kāi)封第一講書(shū)人閱讀 52,807評(píng)論 1 314
  • 那天歼秽,我揣著相機(jī)與錄音,去河邊找鬼情组。 笑死燥筷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的院崇。 我是一名探鬼主播肆氓,決...
    沈念sama閱讀 41,235評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼底瓣!你這毒婦竟也來(lái)了谢揪?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,189評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拨扶,沒(méi)想到半個(gè)月后凳鬓,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,712評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡患民,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評(píng)論 3 343
  • 正文 我和宋清朗相戀三年缩举,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酒奶。...
    茶點(diǎn)故事閱讀 40,926評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蚁孔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惋嚎,到底是詐尸還是另有隱情杠氢,我是刑警寧澤,帶...
    沈念sama閱讀 36,580評(píng)論 5 351
  • 正文 年R本政府宣布另伍,位于F島的核電站鼻百,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏摆尝。R本人自食惡果不足惜温艇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望堕汞。 院中可真熱鬧勺爱,春花似錦、人聲如沸讯检。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,750評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)人灼。三九已至围段,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間投放,已是汗流浹背奈泪。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,867評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灸芳,地道東北人涝桅。 一個(gè)月前我還...
    沈念sama閱讀 49,368評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像烙样,于是被迫代替她去往敵國(guó)和親苹支。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評(píng)論 2 361

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

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案误阻? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,762評(píng)論 1 92
  • 學(xué)習(xí)CSS的最佳網(wǎng)站沒(méi)有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_閱讀 1,069評(píng)論 0 1
  • 一:在制作一個(gè)Web應(yīng)用或Web站點(diǎn)的過(guò)程中,你是如何考慮他的UI、安全性究反、高性能寻定、SEO、可維護(hù)性以及技術(shù)因素的...
    Arno_z閱讀 1,177評(píng)論 0 1
  • CSS布局模型 布局:將元素以正確的大小擺放在正確的位置上 CSS包含3種基本的布局模型流動(dòng)模型(Flow)浮動(dòng)模...
    _空空閱讀 1,046評(píng)論 0 4
  • 什么會(huì)讓你快樂(lè)? 學(xué)會(huì)唱一首歌卦停?修好燈泡向胡?約幾個(gè)好友,吃上一頓飯惊完?實(shí)現(xiàn)自己的小目標(biāo)僵芹?把自己打扮的干干凈凈利利索索?...
    小詩(shī)鴿閱讀 181評(píng)論 0 0