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