摘要:然而,接著浮動盒創(chuàng)建的當前及后續(xù)行盒會進行必要的縮短,為了給浮動盒的讓出空間。
一,浮動的定義
一個浮動盒會向左或向右移動,直到其外邊(outer edge)挨到包含塊邊沿或者另一個浮動盒的外邊。如果存在行盒,浮動盒的外top(邊)會與當前行盒的top(邊)對齊。如果沒有足夠的水平空間來浮動,它會向下移動,直到空間合適或者不會再出現(xiàn)其它浮動了
因為浮動(盒)不在普通流內(nèi),在浮動盒之前或者之后創(chuàng)建的未定位的(non-positioned)塊盒會豎直排列,就像浮動不存在一樣。然而,接著浮動盒 創(chuàng)建的當前及后續(xù)行盒會進行必要的縮短,為了給浮動(盒)的margin box讓出空間。
二,浮動的例子浮動的定義很枯燥,下面我們通過幾個例子,來理解浮動的概念。
1.浮動盒放不下會換行
demo 鏈接描述
123
執(zhí)行結(jié)果
所有盒子都會向左浮動,直到外邊沿挨著塊邊沿。由于容器寬度不夠,box3放不下,就只能向下移動最左邊
2.被卡住
demo 鏈接描述
123
執(zhí)行結(jié)果
由于box1的高度比box2的高,box3在向下向左移動的時候,遇到了box1的外邊沿,就停止移動了。
3.浮動和文本
demo鏈接描述
1挨到包含塊邊沿或者另一個浮動盒的外邊。如果存在行盒,浮動盒的外top(邊)會與當前行盒的top(邊)對齊 如果沒有足夠的水平空間來浮動,它會向下移動,直到空間合適或者不會再出現(xiàn)其它浮動了
23
執(zhí)行結(jié)果
我們給p段落加上背景色,發(fā)現(xiàn)p段落是看不見浮動元素的,但里面的文字是可以看見浮動元素的。
當一個普通元素遇到一個浮動元素,普通元素是看不見浮動元素的。但里面的行盒是可以看見浮動元素的,行盒會縮短并給浮動元素讓位。
寫一下我理解的行盒的概念。行盒就是 line-box,也就是一個塊級元素展示出的每一行就是一個行盒。塊級元素內(nèi)展示在一行的所有元素共同構(gòu)成了一個行盒。比如下圖的img和span1構(gòu)成一個行盒,剩下2個span和button構(gòu)成另外一個行盒。當頁面面積發(fā)生改變,每行的內(nèi)容變化,行盒的內(nèi)容也會變化。
這里有一篇寫行盒(line box)垂直方向的文章鏈接描述
4.浮動會脫離普通流
普通流中所遵循的規(guī)則是塊級元素占據(jù)一行,行內(nèi)元素占據(jù)內(nèi)容的寬度。所有元素從上到下依次排列,普通元素可以把父元素的內(nèi)容撐開。
但浮動元素脫離了普通流,元素不是一個個從上到下排列的,浮動元素也不能把父元素撐開,因為父元素壓根就看不見浮動元素。
demo鏈接描述
5.塊級元素設(shè)置浮動之后,寬度會收縮,寬度由內(nèi)容決定。
行內(nèi)元素設(shè)置浮動之后,可以設(shè)置寬高,內(nèi)外邊距。
感覺有點像inline-block的特性
這是div這是span
執(zhí)行結(jié)果
當我們?nèi)∠?,結(jié)果是div占據(jù)一整行,span不能設(shè)置寬高和內(nèi)外邊距。
6.用浮動設(shè)置一個簡單的導(dǎo)航欄
三,浮動的副作用
1.對后續(xù)元素位置產(chǎn)生影響
demo:鏈接描述
側(cè)邊欄固定寬度內(nèi)容區(qū)塊自適應(yīng)寬度
執(zhí)行結(jié)果:
由于浮動元素脫離普通文檔流,導(dǎo)致浮動元素后面下一個元素footer的排列會出錯。
(2)父容器高度計算出現(xiàn)問題
父元素看不到浮動元素,如果父元素沒有設(shè)置高度,浮動元素是無法撐開父容器的。
demo鏈接描述
/li里面的元素全部浮動的情況下,.navbar的高度為0,所以設(shè)置背景色無效
(1)clear屬性
clear可以用于任何元素,無論是不是浮動元素都可以加。
clear: left;
官方解釋:要求該盒的top border邊位于源文檔中在此之前的元素形成的所有左浮動盒的bottom外邊下方
不正經(jīng)的理解:如果我前面有左浮動元素,我必須位于它的下方
clear: right;
官方解釋:要求該盒的top border邊位于源文檔中在此之前的元素形成的所有右浮動盒的bottom外邊下方
不正經(jīng)的理解:如果我前面有右浮動元素,我必須位于它的下方
clear:both;
如果我前面有浮動元素,我必須位于它的下方
(2)封裝一個clearfix的屬性,用于父元素清除浮動
原理:父元素看不見元素,導(dǎo)致高度不正常。那我們就放一個普通元素在父元素的最后,把高度撐開。因用偽元素可以省一個標簽,所以就用偽元素
.clearfix::after { content:""; //在父元素的最后生成一個內(nèi)容為空的元素。 display: block; //生成的偽元素是內(nèi)聯(lián)元素,需要設(shè)置成塊級元素來占位置啊 clear: both; //把這個元素清除浮動,放在父元素的最下方,把父元素撐開 }
使用:把.clearfix封裝成一個屬性,以后想要在哪里清除浮動,就給它的父元素加上.clearfix的屬性。
demo鏈接描述
兩個浮動元素,如果因放不下導(dǎo)致其中一個下移,對下移的元素設(shè)置負 margin 值。
當-margin加自身的寬度小于容器的寬度,可將其上移.
如圖所示,當box2的負margin為-2px,才能上移。
1、浮動元素脫離了普通文檔流,文檔的普通流中的元素表現(xiàn)的就像浮動元素不存在一樣,但文本可以看見浮動元素
2、設(shè)置浮動后行內(nèi)元素擁有一些塊級元素的特性,可以設(shè)置寬高margin
塊級元素有了行內(nèi)元素的特性,不再占據(jù)一整行,寬度決定于自身內(nèi)容
3、浮動元素不會將父容器撐開
4、浮動元素左右浮動時遇到其他浮動元素會停止
5、如果用了浮動,其父元素最好需要清除浮動
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/114158.html
摘要:浮動為什么會有文本環(huán)繞效果產(chǎn)生這個疑問主要來自于以往的印象浮動的元素是脫離文檔流的。也就是說,浮動元素的確脫離了文檔流,因此文檔流中的塊框會無視浮動的元素,但是文本不會。 作為前端寫了很多頁面布局,但是浮動這塊一直是我似懂非懂的盲點,一方面用浮動能實現(xiàn)很多布局,另一方面浮動造成的影響又會破壞布局讓人頭疼,所以今天就特地寫篇博文解決這塊盲點。 本文主要討論以下幾個問題:1.浮動的原始用途...
摘要:浮動為什么會有文本環(huán)繞效果產(chǎn)生這個疑問主要來自于以往的印象浮動的元素是脫離文檔流的。也就是說,浮動元素的確脫離了文檔流,因此文檔流中的塊框會無視浮動的元素,但是文本不會。 作為前端寫了很多頁面布局,但是浮動這塊一直是我似懂非懂的盲點,一方面用浮動能實現(xiàn)很多布局,另一方面浮動造成的影響又會破壞布局讓人頭疼,所以今天就特地寫篇博文解決這塊盲點。 本文主要討論以下幾個問題:1.浮動的原始用途...
摘要:浮動浮動的框可以向左或向右移動,直到它的外邊緣碰到包含框或另一個浮動框的邊框為止。由于浮動框不在文檔的普通流中,相當于不占用空間,所以文檔的普通流中的塊框表現(xiàn)得就像浮動框不存在一樣。 CSS浮動 浮動的框可以向左或向右移動,直到它的外邊緣碰到包含框或另一個浮動框的邊框為止。由于浮動框不在文檔的普通流中,相當于不占用空間,所以文檔的普通流中的塊框表現(xiàn)得就像浮動框不存在一樣。 CSS ...
摘要:那我們舉個栗子當先聲明一個元素向左浮動時,由于脫離文檔流,這個元素的右邊就會空出一片空間,空間的長寬與浮動元素長寬相同。總結(jié)總結(jié)下來,浮動與清除浮動的順序關(guān)系如下設(shè)置元素浮動,元素脫離文檔流,不計算高度。 本文主要探討兩個問題: 為什么CSS設(shè)置浮動會引起父元素塌陷 為什么設(shè)置clear:both能清除浮動,并撐開父元素。 起因 CSS的浮動,算是我在寫網(wǎng)頁時用的最多的屬性之一。但...
摘要:實驗最基本測驗浮動實驗對應(yīng)結(jié)果實驗結(jié)果分析因為為塊標簽,而且處于同一文檔流當中,固會向下排列。實驗左浮動,右浮動,左浮動浮動實驗結(jié)果實驗結(jié)果分析左浮動,所以失去塊級作用,并且脫離標準文檔流,因此在第一行最左邊。 其實CSS浮動原理就三句話,不像網(wǎng)上的某些文章說的天花亂墜! 浮動必會脫離文檔流 浮動會失去塊級作用 浮動只在自己所在位置那行向左或者向右浮動 請仔細理解上面這三句話,下面...
閱讀 3679·2021-11-24 09:39
閱讀 1288·2021-09-30 09:48
閱讀 3276·2021-09-09 11:51
閱讀 2899·2021-09-08 10:41
閱讀 1340·2019-08-30 14:06
閱讀 2809·2019-08-30 14:01
閱讀 884·2019-08-29 17:11
閱讀 3183·2019-08-29 15:37