浮動(dòng)+定位+BFC邊距合并

關(guān)鍵字:

1 浮動(dòng)元素相關(guān)
2 清除浮動(dòng)
3 定位方式
4 z-index
5 position:relative
6 BFC是什么,作用,生成
7 外邊距合并的幾個(gè)實(shí)例
8 代碼練習(xí)4個(gè)實(shí)例

1 浮動(dòng)元素有什么特征劈狐?對(duì)父容器罐孝、其他浮動(dòng)元素、普通元素肥缔、文字分別有什么影響?

  • 什么是浮動(dòng)元素?
    通過設(shè)置浮動(dòng)元素是 float 屬性值不是 none 的元素,比如flaot:left的元素
  • 浮動(dòng)特征:一個(gè)正常元素脫離普通文檔流.然后被安放到它所在容器的的左端或者右端莲兢,并且其他的文本和行內(nèi)元素環(huán)繞它,浮動(dòng)的框可以向左或向右移動(dòng),直到它的外邊緣碰到包含框或另一個(gè)浮動(dòng)框的邊框?yàn)橹埂?/p>

  • 對(duì)父容器的影響:浮動(dòng)屬性的子元素造成父容器高度塌陷,像脫離一樣

Paste_Image.png
  • 造成影響的原因: 在CSS規(guī)范中续膳,浮動(dòng)定位不屬于正常的頁面流(page flow)改艇,是獨(dú)立定位的。所以坟岔,只含有浮動(dòng)元素的父容器谒兄,在顯示時(shí)不考慮子元素的位置,就當(dāng)它們不存在一樣社付。這就造成了顯示出來舵变,父容器好像空容器一樣酣溃。
  • 對(duì)浮動(dòng)元素影響: 其中一個(gè)浮動(dòng)的外邊緣靠到包含框或另一個(gè)浮動(dòng)框的邊框,向左或向右緊挨.
  • 對(duì)普通元素影響: 普通元素會(huì)當(dāng)浮動(dòng)元素不存在,不影響普通元素原來的位置.
  • 對(duì)文本影響: 文字會(huì)感知浮動(dòng)元素的存在,當(dāng)有文字的普通文檔流元素與浮動(dòng)元素重疊時(shí),其文字會(huì)圍繞在浮動(dòng)元素旁,原因在上面.

--->參考地址

2 清除浮動(dòng)指什么? 如何清除浮動(dòng)? 兩種以上方法

  • clear 屬性規(guī)定元素的哪一側(cè)不允許其他浮動(dòng)元素。
    比如clear :left 屬性定義了元素的左邊上不允許出現(xiàn)浮動(dòng)元素纪隙。在 CSS1 和 CSS2 中赊豌,本質(zhì)上清楚浮動(dòng)這是通過自動(dòng)為清除元素(即設(shè)置了 clear 屬性的元素)增加上外邊距實(shí)現(xiàn)的 。在CSS2.1 中绵咱,會(huì)在元素上外邊距之上增加清除空間碘饼,而外邊距本身并不改變。
  • 清除浮動(dòng)元素方法?

  • 首先我們?yōu)槭裁匆宄?dòng)元素?
    浮動(dòng)可能造成: 布局時(shí)出現(xiàn)重疊;被浮動(dòng)元素遮擋內(nèi)容;有時(shí)父容器高度會(huì)塌陷;父容器沒有包裹到浮動(dòng)的子元素;有時(shí)文字會(huì)圍繞浮動(dòng)元素;被浮動(dòng)影響而被隔開.

  • 怎么清除浮動(dòng)元素的影響?

  • 方法1:在html里增加空div,并設(shè)置css樣式為clear:both;

Paste_Image.png
  • 為什么會(huì)生效?
    原理是父容器現(xiàn)在必須考慮非浮動(dòng)子元素的位置悲伶,而后者肯定出現(xiàn)在浮動(dòng)元素下方艾恼,所以顯示出來,父容器就把所有子元素都包括進(jìn)去了麸锉。
    這種方法比較簡(jiǎn)單钠绍,
    缺點(diǎn):要在頁面中增加冗余標(biāo)簽,違背了語義網(wǎng)的原則

  • 方法2:使父容器浮動(dòng)
    另一種思路是花沉,索性將父容器也改成浮動(dòng)定位柳爽,這樣它就可以帶著子元素一起浮動(dòng)了。

    float為 left|right
    overflow為 hidden|auto|scroll
    display為 table-cell|table-caption|inline-block
    position為 absolute|fixed

代碼這樣寫:

<div style="float:left;">
<div style="float:left;width:45%;"></div>
<div style="float:right;width:45%;"></div>
</div>
  • 這種方法不用修改HTML代碼碱屁,但是缺點(diǎn)在于父容器變成浮動(dòng)以后磷脯,會(huì)影響到后面元素的定位,而且有時(shí)候娩脾,父容器是定位死的赵誓,無法變成浮動(dòng)。
  • 方法三:浮動(dòng)元素的自動(dòng)clearing
    它的思路是讓父容器變得可以自動(dòng)"清理"(clearing)子元素的浮動(dòng)柿赊,從而能夠識(shí)別出浮動(dòng)子元素的位置俩功,不會(huì)出現(xiàn)顯示上的差錯(cuò)。
    要做到這點(diǎn)碰声,只要為父容器加上一條"overflow: hidden"的CSS語句就行了绑雄。代碼這樣寫:
<div style="overflow: hidden;">
<div style="float:left;width:45%;"></div>
<div style="float:right;width:45%;"></div>
</div>
  • 這種方法的缺點(diǎn)主要有二個(gè),一個(gè)是IE 6不支持奥邮,另一個(gè)是一旦子元素的大小超過父容器的大小万牺,就會(huì)出顯示問題。

  • 方法4:在父容器的尾部自動(dòng)創(chuàng)建一個(gè)空的子元素
    代碼

.clearfix {
*zoom: 1;
}
.clearfix:after {
content: "";
display: block;
clear: left;
}
這樣也是可以的:
.clearfix {
*zoom: 1;
}
.clearfix:after {
content: "";
display: table;
clear: both;
}
  • 其中的"clearfix"是父容器的class名稱洽腺,"content:"";"是在父容器的結(jié)尾處放一個(gè)空白字符脚粟,"display: block; clear: both;"是確保這個(gè)空字符是非浮動(dòng)的獨(dú)立區(qū)塊。
  • 為什么加: *zoom: 1;
    after選擇符IE 6不支持蘸朋,也就是說上面的這段代碼在IE 6中無效核无,
    我們添加一條IE 6的獨(dú)有命令"zoom:1;"就行了,這條命令的作用是激活父元素的"hasLayout"屬性藕坯,讓父元素?fù)碛凶约旱牟季帧?/li>

--->參考地址

3 有幾種定位方式团南,分別是如何實(shí)現(xiàn)定位的噪沙,參考點(diǎn)是什么,使用場(chǎng)景是什么吐根?

  • position 屬性規(guī)定元素的定位類型正歼。
    這個(gè)屬性定義建立元素布局所用的定位機(jī)制。任何元素都可以定位拷橘,不過絕對(duì)或固定元素會(huì)生成一個(gè)塊級(jí)框局义,而不論該元素本身是什么類型。
  • 參考點(diǎn)和使用場(chǎng)景在下圖的描述當(dāng)中


    Paste_Image.png

----->參考地址

4 z-index 有什么作用? 如何使用?

  • z-index 屬性設(shè)置元素的堆疊順序冗疮。擁有更高堆疊順序的元素總是會(huì)處于堆疊順序較低的元素的前面萄唇。
  • 元素可擁有負(fù)的 z-index 屬性值。
  • Z-index 僅能在定位元素上奏效(例如 position:absolute;)
    該屬性設(shè)置一個(gè)定位元素沿 z 軸的位置术幔,z 軸定義為垂直延伸到顯示區(qū)的軸另萤。如果為正數(shù),則離用戶更近诅挑,為負(fù)數(shù)則表示離用戶更遠(yuǎn)四敞。

實(shí)例:

<html>
<head>
<style type="text/css">
img.x
{
position:absolute;
left:0px;
top:0px;
z-index:1
}
</style>
</head>

<body>
<h1>這是一個(gè)標(biāo)題</h1>
![](/i/eg_mouse.jpg) 
<p>默認(rèn)的 z-index 是 0。Z-index 1 擁有更高的優(yōu)先級(jí)揍障。</p>
</body>

</html>

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

  • position:relative
    位置發(fā)生偏移.是相對(duì)于自己之前正常的位置計(jì)算的,何為正常位置:沒有定位position:static.不影響普通文檔流中其他的元素的位置,但還占據(jù)原來的位置
  • margin 設(shè)為負(fù)值
    位置發(fā)生偏移,影響普通文檔流中其他的元素的位置.原來的位置會(huì)發(fā)生改變

6 BFC 是什么目养?如何生成 BFC俩由?BFC 有什么作用毒嫡?舉例說明

  • 塊格式化上下文(block formatting context) 是Web頁面的可視CSS渲染的一部分。它是塊盒子的布局發(fā)生及浮動(dòng)體彼此交互的區(qū)域幻梯。

  • 如何生成BFC:


    Paste_Image.png
Paste_Image.png
  • 作用:
    BFC會(huì)阻止垂直外邊距的折疊
    BFC不會(huì)重疊浮動(dòng)元素
    BFC可以包含浮動(dòng)元素

  • BFC會(huì)阻止垂直外邊距的折疊的7個(gè)實(shí)例

Snip20170406_231.png
Snip20170406_232.png
Snip20170406_233.png
Snip20170406_230.png
Snip20170406_235.png
Snip20170406_236.png
  • BFC不會(huì)重疊浮動(dòng)元素的1個(gè)實(shí)例:
Snip20170406_237.png
  • BFC可以包含浮動(dòng)元素的6個(gè)實(shí)例:
Snip20170320_61.png
Snip20170320_62.png
Snip20170320_63.png
Snip20170320_64.png
Snip20170320_65.png
Paste_Image.png

7 在什么場(chǎng)景下會(huì)出現(xiàn)外邊距合并兜畸?如何合并?如何不讓相鄰元素外邊距合并碘梢?給個(gè)父子外邊距合并的范例

  • 合并4種場(chǎng)景:

第1種.

兄弟控件


第2種.

父子控件


父子控件實(shí)例

第3種

空元素作為子元素


第4種
外邊距合并可以設(shè)置margin負(fù)值

8. 代碼練習(xí)4個(gè)實(shí)例

alert橫條
表單效果
彈窗
導(dǎo)航欄

參考地址:
清除浮動(dòng)實(shí)例
浮動(dòng)元素和清除浮動(dòng)方法
MDN文檔:float


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末咬摇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子煞躬,更是在濱河造成了極大的恐慌肛鹏,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恩沛,死亡現(xiàn)場(chǎng)離奇詭異在扰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)雷客,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門芒珠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搅裙,你說我怎么就攤上這事皱卓」ィ” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵娜汁,是天一觀的道長(zhǎng)嫂易。 經(jīng)常有香客問我,道長(zhǎng)存炮,這世上最難降的妖魔是什么炬搭? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮穆桂,結(jié)果婚禮上宫盔,老公的妹妹穿的比我還像新娘。我一直安慰自己享完,他們只是感情好灼芭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著般又,像睡著了一般彼绷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茴迁,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天寄悯,我揣著相機(jī)與錄音,去河邊找鬼堕义。 笑死猜旬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的倦卖。 我是一名探鬼主播洒擦,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼怕膛!你這毒婦竟也來了熟嫩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤褐捻,失蹤者是張志新(化名)和其女友劉穎掸茅,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柠逞,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昧狮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了边苹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陵且。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出慕购,到底是詐尸還是另有隱情聊疲,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布沪悲,位于F島的核電站获洲,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏殿如。R本人自食惡果不足惜贡珊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涉馁。 院中可真熱鬧门岔,春花似錦、人聲如沸烤送。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽帮坚。三九已至妻往,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間试和,已是汗流浹背讯泣。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阅悍,地道東北人好渠。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像溉箕,于是被迫代替她去往敵國和親晦墙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子悦昵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

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

  • relative:生成相對(duì)定位的元素肴茄,通過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
  • 1.浮動(dòng)元素有什么特征贞滨?對(duì)父容器、其他浮動(dòng)元素、普通元素晓铆、文字分別有什么影響? 特征:浮動(dòng)元素脫離普通文檔流勺良,普通...
    山門龍龍閱讀 294評(píng)論 0 2
  • 1.浮動(dòng)元素有什么特征?對(duì)父容器骄噪、其他浮動(dòng)元素尚困、普通元素、文字分別有什么影響? 任何定義為float的元素链蕊,都可以...
    QQQQQCY閱讀 261評(píng)論 0 0
  • 浮動(dòng)元素有什么特征跨跨?對(duì)父容器、其他浮動(dòng)元素囱皿、普通元素勇婴、文字分別有什么影響? 特征: 脫離正常文檔流,沿其容器的左側(cè)...
    _Dot912閱讀 713評(píng)論 0 3