浮動(dòng)元素與邊距合并

float即為浮動(dòng)艾杏,在CSS中的作用是使元素脫離正常的文檔流并使其移動(dòng)到其父元素的“最左邊”或“最右邊”杰标。下面解釋下這個(gè)定義中的幾個(gè)名詞的概念:
文檔流:在html中文檔流即為元素從上至下排列的順序。
脫離文檔流:元素從正常的排列順序被抽離譬淳。
最左邊/最右邊:上述的移動(dòng)到父元素最左和最右是指元素往左或往右移動(dòng)直到碰到另一個(gè)浮動(dòng)元素或父元素內(nèi)容區(qū)的邊界(不包括padding)戚啥。

參考: [https://www.w3cplus.com/css/float.html]

1.浮動(dòng)元素有什么特征年叮?對(duì)父容器、其他浮動(dòng)元素纬纪、普通元素蚓再、文字分別有什么影響?
浮動(dòng)元素的特征:

  • 浮動(dòng)元素會(huì)脫離正常的文檔流,按照其外邊距指定的位置相對(duì)于它的上一個(gè)塊級(jí)元素(或父元素)顯示包各。

  • 浮動(dòng)元素后面的塊級(jí)元素的內(nèi)容會(huì)向此浮動(dòng)元素的外邊距靠齊摘仅,但是邊框和背景卻忽略浮動(dòng)元素而向上一個(gè)任意非浮動(dòng)元素靠齊。

  • 浮動(dòng)元素后面的內(nèi)聯(lián)元素會(huì)向此浮動(dòng)元素的外邊距靠齊问畅。

對(duì)父元素的影響:對(duì)于其父元素來(lái)說(shuō)娃属,元素浮動(dòng)之后六荒,它脫離當(dāng)前正常的文檔流,所以它也無(wú)法撐開其父元素矾端,造成父元素的塌陷掏击。

對(duì)其他浮動(dòng)元素的影響:同一個(gè)方向的浮動(dòng)元素:當(dāng)一個(gè)浮動(dòng)元素在浮動(dòng)過(guò)程中碰到同一個(gè)方向的浮動(dòng)元素時(shí),它會(huì)緊跟在它們后面秩铆。
反方向的浮動(dòng)元素:互不影響砚亭,位于同一條水平線上,當(dāng)空間不夠時(shí)會(huì)被擠下豺旬。

對(duì)普通元素的影響:如果兄弟元素為塊級(jí)元素钠惩,該元素會(huì)忽視浮動(dòng)元素的而占據(jù)它的位置,并且元素會(huì)處在浮動(dòng)元素的下層(并且無(wú)法通過(guò)z-index屬性改變他們的層疊位置)族阅,但它的內(nèi)部文字和其他行內(nèi)元素都會(huì)環(huán)繞浮動(dòng)元素篓跛。
如果如果兄弟元素為內(nèi)聯(lián)元素,則元素會(huì)環(huán)繞浮動(dòng)元素排列坦刀。

對(duì)文字的影響:文字會(huì)環(huán)繞浮動(dòng)元素排列愧沟。

2.清除浮動(dòng)指什么? 如何清除浮動(dòng)? 兩種以上方法。
清楚浮動(dòng)指解決浮動(dòng)父容器高度塌陷問(wèn)題鲤遥。
清除浮動(dòng)的方法可以分成兩類:
一是利用 clear 屬性沐寺,包括在浮動(dòng)元素末尾添加一個(gè)帶有 clear: both 屬性的空 div 來(lái)閉合元素,其實(shí)利用 :after 偽元素的方法也是在元素末尾添加一個(gè)內(nèi)容為一個(gè)點(diǎn)并帶有 clear: both 屬性的元素實(shí)現(xiàn)的盖奈。
二是觸發(fā)浮動(dòng)元素父元素的 BFC (Block Formatting Contexts, 塊級(jí)格式化上下文)混坞,使到該父元素可以包含浮動(dòng)元素.
解決方法:
1.使用帶clear屬性的空元素,在浮動(dòng)元素后使用一個(gè)空元素如<div class="clear"></div>钢坦,并在CSS中賦予.clear{clear:both;}屬性即可清理浮動(dòng)究孕。

<div style="border: solid 5px #0e0; width:300px;">
<div style="height: 100px; width: 100px; background-color: Red; float:left;">
</div>
<div style="height: 100px; width: 100px; background-color: Green; float:left;">
</div>
<div style="height: 100px; width: 100px; background-color: Yellow; float:left;">
</div>
<div style="clear:both;"></div>
</div>

2.使用CSS的float,overflow爹凹,display厨诸,position屬性。float為 left|right禾酱,overflow為hidden|auto|scroll微酬,display為 table-cell|table-caption|inline-block,position為 absolute|fixed颤陶,例如為父元素設(shè)置容器寬高或設(shè)置 zoom:1颗管。在添加overflow屬性后,浮動(dòng)元素又回到了容器層滓走,把容器高度撐起忙上,達(dá)到了清理浮動(dòng)的效果。

<div style="border: solid 5px #0e0; width:300px;overflow:hidden;">
<div style="height: 100px; width: 100px; background-color: Red; float:left;">
</div>
<div style="height: 100px; width: 100px; background-color: Green; float:left;">
</div>
<div style="height: 100px; width: 100px; background-color: Yellow; float:left;">
</div>
</div>

3.使用CSS的:after偽元素闲坎,給浮動(dòng)元素的容器添加一個(gè)clearfix的class疫粥,然后給這個(gè)class添加一個(gè):after偽元素實(shí)現(xiàn)元素末尾添加一個(gè)看不見的塊元素清理浮動(dòng)茬斧。
/方法1/
.clearfix{
*zoom:1;
}
.clearfix:after{
content:"";
display:block;
clear:left;
}

/方法2/
.clearfix{
*zoom:1;
}
.clearfix:after{
content:"";
display:table;
clear:both;
}

3.有幾種定位方式,分別是如何實(shí)現(xiàn)定位的梗逮,參考點(diǎn)是什么项秉,使用場(chǎng)景是什么?
CSS有三種定位方式:absolute定位慷彤,relative定位和fixed定位娄蔼。

  • absolute定位:1.通過(guò)left/top/right/buttom,以具有position屬性的父元素為參考進(jìn)行定位底哗。2.absolute偏移的參考點(diǎn)首先是父元素岁诉,然后檢查該父元素是否具有position屬性,若具有position屬性跋选,則以該父元素為參考點(diǎn)進(jìn)行偏移涕癣,若不具有則繼續(xù)往上一級(jí)找,直到body標(biāo)簽為止前标。3.使用場(chǎng)景是需要相對(duì)于父元素或者body進(jìn)行定位坠韩。

  • relative定位:1.通過(guò)left/top/right/buttom,以自己的位置進(jìn)行定位炼列。2.relative偏移的參考點(diǎn)是自身位置只搁,是拿偏移前的位置與偏移后的位置進(jìn)行比較,比如top10px俭尖,表現(xiàn)出來(lái)的其實(shí)是向下移動(dòng)10px氢惋。3.使用場(chǎng)景是偏移前的位置需要保留,不脫離文檔流稽犁。

  • fixed定位:1.通過(guò)left/top/right/buttom明肮,以瀏覽器窗口進(jìn)行定位。2.fixed偏移的參考點(diǎn)是瀏覽器窗口缭付。3.使用場(chǎng)景是固定于瀏覽器的某個(gè)位置不動(dòng)。

4.z-index 有什么作用? 如何使用?
z-index 屬性設(shè)置元素的堆疊順序循未。擁有更高堆疊順序的元素總是會(huì)處于堆疊順序較低的元素的前面陷猫。
注釋:元素可擁有負(fù)的 z-index 屬性值。Z-index 僅能在定位元素上奏效(例如 position:absolute;)的妖!

值 | 描述
|````|`````|
auto | 默認(rèn)绣檬。堆疊順序與父元素相等。
number | 設(shè)置元素的堆疊順序嫂粟。
inherit | 規(guī)定應(yīng)該從父元素繼承 z-index 屬性的值娇未。

例如:
img
{
position:absolute;
left:0px;
top:0px;
z-index:-1;
}

5.position:relative和負(fù)margin都可以使元素位置發(fā)生偏移?二者有什么區(qū)別。

  • position:relative發(fā)生偏移后星虹,在文檔流中的位置不變零抬。
  • 負(fù)margin會(huì)改變?cè)卦谖臋n流中的位置镊讼。

6.BFC 是什么?如何生成 BFC平夜?BFC 有什么作用蝶棋?舉例說(shuō)明
BFC的全稱是 Block Format Content塊級(jí)格式化上下文。它是一個(gè)獨(dú)立的渲染區(qū)域忽妒,只有Block-level box參與玩裙, 它規(guī)定了內(nèi)部的Block-level Box如何布局,并且與這個(gè)區(qū)域外部毫不相干段直。

生成方法:可以對(duì)父容器添加這些屬性來(lái)生成BFC:
float為 left|right
overflow為 hidden|auto|scroll
display為 table-cell|table-caption|inline-block
position為 absolute|fixed
作用:1. 自適應(yīng)兩欄布局吃溅;2.清除內(nèi)部浮動(dòng);3. 防止垂直 margin 重疊鸯檬。
例如2:

    <div style="height: 100px; width: 100px; background-color: Red;  float:left;">
    </div>
    <div style="height: 100px; width: 100px; background-color: Green;  float:left;">
    </div>
    <div style="height: 100px; width: 100px; background-color: Yellow;  float:left;">
    </div>
</div>```

7.在什么場(chǎng)景下會(huì)出現(xiàn)外邊距合并决侈?如何合并?如何不讓相鄰元素外邊距合并京闰?給個(gè)父子外邊距合并的范例颜及。
兄弟元素合并:當(dāng)一個(gè)元素出現(xiàn)在另一個(gè)元素上面時(shí),第一個(gè)元素的下外邊距與第二個(gè)元素的上外邊距會(huì)發(fā)生合并蹂楣。

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/5027142-d51666bb851732ea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

父子間合并:當(dāng)一個(gè)元素包含在另一個(gè)元素中時(shí)(假設(shè)沒(méi)有內(nèi)邊距或邊框把外邊距分隔開)俏站,它們的上和/或下外邊距也會(huì)發(fā)生合并。

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/5027142-93f85f3d0f0a78bf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

空元素:假設(shè)有一個(gè)空元素痊土,它有外邊距肄扎,但是沒(méi)有邊框或填充。在這種情況下赁酝,上外邊距與下外邊距就碰到了一起犯祠,它們會(huì)發(fā)生合并
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/5027142-3c070866a5e0451d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
如果這個(gè)外邊距遇到另一個(gè)元素的外邊距,它還會(huì)發(fā)生合并:

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/5027142-d1f6e166d2b61172.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

兩個(gè)相鄰的外邊距都是正數(shù)時(shí)酌呆,合并結(jié)果是它們兩者之間較大的值衡载。
兩個(gè)相鄰的外邊距都是負(fù)數(shù)時(shí),合并結(jié)果是兩者絕對(duì)值的較大值隙袁。
兩個(gè)外邊距一正一負(fù)時(shí)痰娱,合并結(jié)果是兩者的相加的和。

防止合并:
對(duì)于兄弟元素:設(shè)置浮動(dòng)菩收,display:inline-block或使其父元素均形成BFC可防止邊距合并(如overflow:hidden)
對(duì)于父子間的元素:可以給父元素設(shè)置border或padding屬性來(lái)防止合并梨睁。
對(duì)于空元素:設(shè)置border或padding屬性或overflow:hidden等(形成BFC)來(lái)防止合并。



[代碼1](http://js.jirengu.com/hihibiwexu)
[代碼2](http://js.jirengu.com/luyozovoma)
[代碼3](http://js.jirengu.com/qiciqizice)
[代碼4](http://js.jirengu.com/nozivosozi)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末娜饵,一起剝皮案震驚了整個(gè)濱河市坡贺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖遍坟,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拳亿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡政鼠,警方通過(guò)查閱死者的電腦和手機(jī)风瘦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)公般,“玉大人万搔,你說(shuō)我怎么就攤上這事」倭保” “怎么了瞬雹?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)刽虹。 經(jīng)常有香客問(wèn)我酗捌,道長(zhǎng),這世上最難降的妖魔是什么涌哲? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任胖缤,我火速辦了婚禮,結(jié)果婚禮上阀圾,老公的妹妹穿的比我還像新娘哪廓。我一直安慰自己,他們只是感情好初烘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布涡真。 她就那樣靜靜地躺著,像睡著了一般肾筐。 火紅的嫁衣襯著肌膚如雪哆料。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天吗铐,我揣著相機(jī)與錄音东亦,去河邊找鬼。 笑死唬渗,一個(gè)胖子當(dāng)著我的面吹牛典阵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谣妻,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼卒稳!你這毒婦竟也來(lái)了蹋半?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤充坑,失蹤者是張志新(化名)和其女友劉穎减江,沒(méi)想到半個(gè)月后染突,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辈灼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年份企,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巡莹。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡司志,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出降宅,到底是詐尸還是另有隱情骂远,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布腰根,位于F島的核電站激才,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏额嘿。R本人自食惡果不足惜瘸恼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望册养。 院中可真熱鬧东帅,春花似錦、人聲如沸捕儒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)刘莹。三九已至阎毅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間点弯,已是汗流浹背扇调。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抢肛,地道東北人狼钮。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像捡絮,于是被迫代替她去往敵國(guó)和親熬芜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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

  • 問(wèn)答題47 /72 常見瀏覽器兼容性問(wèn)題與解決方案福稳? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,753評(píng)論 1 92
  • 一涎拉,浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素鼓拧、普通元素半火、文字分別有什么影響? 浮動(dòng)模型是一種可視化格式模型,浮動(dòng)...
    DeeJay_Y閱讀 874評(píng)論 0 4
  • 1店归、浮動(dòng)元素有什么特征?對(duì)父容器赂韵、其他浮動(dòng)元素娱节、普通元素、文字分別有什么影響祭示? 浮動(dòng)元素按照橫向排列的方式進(jìn)行元素...
    李博洋li閱讀 403評(píng)論 0 1
  • relative:生成相對(duì)定位的元素肄满,通過(guò)top,bottom,left,right的位置相對(duì)于其正常位置進(jìn)行定位...
    zx9426閱讀 943評(píng)論 0 2
  • 1. 浮動(dòng)元素有什么特征汇陆?對(duì)父容器怒炸、其他浮動(dòng)元素、普通元素毡代、文字分別有什么影響? 浮動(dòng)元素的特征:CSS設(shè)計(jì)flo...
    饑人谷_邵征鵬閱讀 546評(píng)論 0 0