有關(guān)浮動(dòng)定位BFC邊距合并問(wèn)題搜集

1.浮動(dòng)元素有什么特征插爹?對(duì)父容器、其他浮動(dòng)元素、普通元素赠尾、文字分別有什么影響?

浮動(dòng)元素不在文檔的普通流中力穗,它可以根據(jù)float屬性值而左右移動(dòng),直到它的外邊緣碰到包含框或者另一個(gè)浮動(dòng)元素的框的邊緣才停止移動(dòng)气嫁。

  • 對(duì)父容器的影響:如果父容器內(nèi)的子元素是浮動(dòng)元素当窗,那么父容器會(huì)失去高度,形成父容器塌陷寸宵,在浮動(dòng)元素之外崖面。
  • 對(duì)其它浮動(dòng)元素的影響:如果包含塊太窄無(wú)法容納水平排列的全部浮動(dòng)元素,那么其它浮動(dòng)元素會(huì)向下移動(dòng)梯影,直到有足夠的空間巫员,而如果浮動(dòng)元素的高度不同,那么向下移動(dòng)的時(shí)候可能會(huì)被“卡”住甲棍。
  • 對(duì)普通元素的影響:普通元素感知不到浮動(dòng)元素简识,繼而占據(jù)浮動(dòng)元素原有的位置,但會(huì)被浮動(dòng)元素遮罩感猛。
  • 對(duì)文字的影響:文字可感知到浮動(dòng)元素七扰,會(huì)留出空間,形成環(huán)繞的效果陪白。

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

  1. 空標(biāo)簽清浮動(dòng):在父元素的子元素的最后添加一個(gè)沒(méi)有高度的空的塊標(biāo)簽颈走,并且設(shè)置屬性 clear:both;
  2. 使父元素形成新的BFC,可以使用的屬性:
  • overflow:hidden/auto/scroll
  • display:inline-block
  • float 等等

但是這類方法會(huì)帶來(lái)不同的副作用拷泽,需要考慮自身需求疫鹊,去選擇合適的屬性去實(shí)現(xiàn)效果。

  1. 使用偽元素清楚浮動(dòng)司致。目前比較標(biāo)準(zhǔn)無(wú)副作用的實(shí)現(xiàn)方式:
.clearfix{
zoom:1;   /*此段是在確定IE6下也可實(shí)現(xiàn)效果*/
}
.clearfix:after{ 
content:"";
display:block;
visible:hidden;
clear:both;
}

3.有幾種定位方式拆吆,分別是如何實(shí)現(xiàn)定位的,參考點(diǎn)是什么脂矫,使用場(chǎng)景是什么枣耀?

定位的屬性:

屬性
inherit 規(guī)定應(yīng)該從父元素繼承 position 屬性的值
static 默認(rèn)值,沒(méi)有定位,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)
relative 生成相對(duì)定位的元素庭再,相對(duì)于元素原本的位置進(jìn)行定位
absolute 生成絕對(duì)定位的元素捞奕,相對(duì)于static定位以外的第一個(gè)祖先元素(offset parent)進(jìn)行定位,元素的位置通過(guò) left, top, right 以及 bottom 屬性進(jìn)行規(guī)定
fixed 生成絕對(duì)定位的元素,相對(duì)于瀏覽器窗口進(jìn)行定位拄轻。元素的位置通過(guò) left, top, right 以及 bottom 屬性進(jìn)行規(guī)定
sticky CSS3新屬性颅围,表現(xiàn)類似position:relative和position:fixed的合體,在目標(biāo)區(qū)域在屏幕中可見(jiàn)時(shí)恨搓,它的行為就像position:relative; 而當(dāng)頁(yè)面滾動(dòng)超出目標(biāo)區(qū)域時(shí)院促,它的表現(xiàn)就像position:fixed筏养,它會(huì)固定在目標(biāo)位置

這些屬性,比較常用的就是 relative常拓;absolute渐溶;fiexd三個(gè)屬性

對(duì)于新屬性sticky


sticky

可以看到,他的兼容性比較差弄抬,所以一般不使用它實(shí)現(xiàn)效果茎辐,而是采用javascrip來(lái)實(shí)現(xiàn)。

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

因?yàn)榻^對(duì)定位的元素脫離了普通流掂恕,所以絕對(duì)定位的元素可以覆蓋頁(yè)面上的其它元素拖陆。這時(shí)可以通過(guò)給元素設(shè)置z-index屬性來(lái)控制疊放順序,該屬性值越高竹海,元素位置越靠上慕蔚。

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

position:relative;只相對(duì)自己原本位置發(fā)生偏移,不影響其它普通流中元素的位置斋配。


position:relative

margin:除了讓元素自身發(fā)生偏移還會(huì)影響其它普通流中的元素孔飒。


margin

6.BFC 是什么?如何生成 BFC艰争?BFC 有什么作用坏瞄?舉例說(shuō)明

BFC是塊級(jí)格式上下文。其定義是:浮動(dòng)甩卓、絕對(duì)定位(絕對(duì)定位鸠匀、固定定位)元素、塊級(jí)容器(如inline-block逾柿、 table-cell缀棍、table-caption)并不是塊級(jí)盒子,還包括哪些overflow屬性值取值visible以外的塊級(jí)盒子机错,會(huì)為它們的內(nèi)容物創(chuàng)建一個(gè)新的塊級(jí)格式化上下文爬范。對(duì)元素設(shè)置以下屬性就可以生成BFC:
float: left | right;
overflow: hidden | auto | scroll;
display: table-cell | table-caption | inline-block;
position: absolute | fixed;
原理大致是這樣:
在沒(méi)有BFC的情況下,兩塊的margin會(huì)相互折疊弱匪。
代碼:

<div style="width: 200px;height: 200px;background: #cccccc;margin-bottom: 30px;"></div>
<div style="width: 200px;height: 200px;background: #333333;margin-top: 30px;margin-bottom:30px;">   </div>
<div style="width: 200px;height: 200px;background: #666666;margin-top: 50px;"></div>

如圖:

alt text

可以看到上下兩個(gè)div的margin折疊了青瀑,第一個(gè)div的margin-bottom和第二個(gè)div的margin-top折疊為了30px,第二個(gè)div的margin-bottom和第三個(gè)div的margin-top折疊為了50px萧诫,而這個(gè)折疊本質(zhì)是塊級(jí)盒block-level box下的margin-box的折疊斥难,后面會(huì)講到如果再到這幾個(gè)div的外面一層再包裹一個(gè)擁有BFC的元素的話,他們之間的margin便不會(huì)折疊了帘饶,因?yàn)锽FC里面的盒子和其外面的盒子間是不會(huì)有任何影響的哑诊。關(guān)于margin折疊方面的還有很多細(xì)節(jié),可以參考官方文檔:collapsing-margins
現(xiàn)在我們?cè)賮?lái)看一下使用BFC以后的效果及刻,代碼:

<div style="overflow: auto;width: 100%;">
    <div style="float: left;width: 100%;">
        <div style="margin-bottom: 30px;width: 100px;height: 100px;background-color: #cccccc;"></div>
    </div>
    <div style="float: left;width: 100%;">
        <div style="margin-top: 50px;width: 100px;height: 100px;background-color: #333333;"></div>
    </div>
</div>

結(jié)果如下:


Alt text

可以看到搭儒,上面示例中的上面灰色div和下面黑色div的margin并沒(méi)有重疊穷当,這是因?yàn)槟莾蓚€(gè)float的父盒子在為它下面的盒子創(chuàng)建了一個(gè)BFC,從而將float盒子里面的子盒子給隔離了起來(lái)淹禾,因此也就不會(huì)margin折疊了,這只是創(chuàng)建BFC的一個(gè)方法茴扁,其它的還有overflow:hidden等铃岔,而在這個(gè)BFC下的盒子都是遵循BFC的布局規(guī)則的。
然后峭火,當(dāng)塊級(jí)盒block-level box外層沒(méi)有BFC作保護(hù)毁习,有margin折疊時(shí),是這樣的:


而當(dāng)塊級(jí)盒block-level box外層有BFC作保護(hù)時(shí)(比如給下圖灰色邊框線盒子一個(gè)float:left)卖丸,則是這樣的:


同時(shí)BFC下的盒子是按照BFC的規(guī)則從上往下一個(gè)接一個(gè)的排列纺且,并且存在外邊距折疊的,你可以通過(guò)在這層BFC下再去嵌套BFC來(lái)阻止下面盒子的外邊距折疊

BFC的作用有:
(1) 解決margin重疊問(wèn)題稍浆。所謂margin重疊是指處于同一個(gè)BFC的相鄰元素载碌、嵌套元素,只要它們之間沒(méi)有阻擋(如:邊框衅枫、非空內(nèi)容嫁艇、padding等)就會(huì)發(fā)生margin重疊。這是只要讓其中一個(gè)元素生成新的BFC就能解決margin重疊問(wèn)題弦撩。
(2) 清除浮動(dòng)步咪。因?yàn)锽FC可以包含浮動(dòng),所以讓父容器生成新的BFC可以讓父容器在視覺(jué)上包圍了浮動(dòng)的子元素益楼,因而清除了浮動(dòng)猾漫。
原文章地址

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

外邊距合并指的是,當(dāng)兩個(gè)垂直外邊距相遇時(shí)俊扭,它們將形成一個(gè)外邊距队橙。合并后的外邊距的高度等于兩個(gè)發(fā)生合并的外邊距的高度中的較大者。
(1)兩個(gè)兄弟元素在垂直方向上合并外邊距萨惑,取較大值進(jìn)行合并捐康。

#d1 {
  width:100px;
  height:100px;
  margin-bottom:20px;
}
#d2 {
  width:100px;
  height:100px;
  margin-top:10px;
}

這時(shí)兩個(gè)div在垂直距離上的外邊距進(jìn)行了合并,合并后的值是20px庸蔼。

(2)父子元素間沒(méi)有阻擋(如:邊框解总、非空內(nèi)容、padding等)時(shí)發(fā)生上和/或下外邊距合并姐仅。
例:

<div class=”parent”>
    <div class=”child”>
    </div>
</div>

.parent{
    width: 200px;
    height: 100px;
    margin-top:10px;
    background-color: red;
}
.child{
       width: 100px;
       height: 100px;
       margin-top:30px;
       background-color: yellow;
 }

這時(shí)就會(huì)發(fā)生合并花枫。合并后的外邊距是30px刻盐。

關(guān)于外邊距合并:

外邊距合并指的是,當(dāng)兩個(gè)垂直外邊距相遇時(shí)劳翰,它們將形成一個(gè)外邊距敦锌。
合并后的外邊距的高度等于兩個(gè)發(fā)生合并的外邊距的高度中的較大者。

  • 當(dāng)一個(gè)元素出現(xiàn)在另一個(gè)元素上面時(shí)佳簸,第一個(gè)元素的下外邊距與第二個(gè)元素的上外邊距會(huì)發(fā)生合并:


    CSS外邊距合并的問(wèn)題
代碼實(shí)驗(yàn)
  • 當(dāng)一個(gè)元素包含在另一個(gè)元素中時(shí)(假設(shè)沒(méi)有內(nèi)邊距或邊框把外邊距分隔開)乙墙,它們的上和/或下外邊距也會(huì)發(fā)生合并:


    CSS外邊距合并的問(wèn)題
  • 外邊距甚至可以與自身發(fā)生合并
    假設(shè)有一個(gè)空元素,它有外邊距生均,但是沒(méi)有邊框或填充听想。在這種情況下,上外邊距與下外邊距就碰到了一起马胧,它們會(huì)發(fā)生合并:


    自身發(fā)生合并

    如果這個(gè)外邊距遇到另一個(gè)元素的外邊距汉买,它還會(huì)發(fā)生合并:


    自身發(fā)生合并
    這就是一系列的段落元素占用空間非常小的原因,因?yàn)樗鼈兊乃型膺吘喽己喜⒌揭黄穑纬闪艘粋€(gè)小的外邊距。

外邊距合并的意義:

外邊距合并初看上去可能有點(diǎn)奇怪皂贩,但是實(shí)際上凯砍,它是有意義的。以由幾個(gè)段落組成的典型文本頁(yè)面為例。第一個(gè)段落上面的空間等于段落的上外邊距。如果沒(méi)有外邊距合并,后續(xù)所有段落之間的外邊距都將是相鄰上外邊距和下外邊距的和崔列。這意味著段落之間的空間是頁(yè)面頂部的兩倍。如果發(fā)生外邊距合并旺遮,段落之間的上外邊距和下外邊距就合并在一起赵讯,這樣各處的距離就一致了。

外邊距合并的意義

需要注意的是:只有普通文檔流中塊框的垂直外邊距才會(huì)發(fā)生外邊距合并耿眉。行內(nèi)框边翼、浮動(dòng)框或絕對(duì)定位之間的外邊距不會(huì)合并。
參考文獻(xiàn)

代碼題

代碼1
代碼2
代碼3
代碼4

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鸣剪,一起剝皮案震驚了整個(gè)濱河市组底,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌筐骇,老刑警劉巖债鸡,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異铛纬,居然都是意外死亡厌均,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門告唆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)棺弊,“玉大人晶密,你說(shuō)我怎么就攤上這事∧K” “怎么了稻艰?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)侈净。 經(jīng)常有香客問(wèn)我连锯,道長(zhǎng),這世上最難降的妖魔是什么用狱? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮拼弃,結(jié)果婚禮上夏伊,老公的妹妹穿的比我還像新娘。我一直安慰自己吻氧,他們只是感情好溺忧,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盯孙,像睡著了一般鲁森。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上振惰,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天歌溉,我揣著相機(jī)與錄音,去河邊找鬼骑晶。 笑死痛垛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的桶蛔。 我是一名探鬼主播匙头,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼仔雷!你這毒婦竟也來(lái)了蹂析?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤碟婆,失蹤者是張志新(化名)和其女友劉穎电抚,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脑融,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡喻频,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肘迎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甥温。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锻煌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出姻蚓,到底是詐尸還是另有隱情宋梧,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布狰挡,位于F島的核電站捂龄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏加叁。R本人自食惡果不足惜倦沧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望它匕。 院中可真熱鬧展融,春花似錦、人聲如沸豫柬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)烧给。三九已至燕偶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間础嫡,已是汗流浹背指么。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留驰吓,地道東北人涧尿。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像檬贰,于是被迫代替她去往敵國(guó)和親姑廉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • relative:生成相對(duì)定位的元素翁涤,通過(guò)top,bottom,left,right的位置相對(duì)于其正常位置進(jìn)行定位...
    zx9426閱讀 930評(píng)論 0 2
  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案桥言? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評(píng)論 1 92
  • 一,浮動(dòng)元素有什么特征葵礼?對(duì)父容器号阿、其他浮動(dòng)元素、普通元素鸳粉、文字分別有什么影響? 浮動(dòng)模型是一種可視化格式模型扔涧,浮動(dòng)...
    DeeJay_Y閱讀 858評(píng)論 0 4
  • 1. 浮動(dòng)元素有什么特征?對(duì)父容器湖雹、其他浮動(dòng)元素咏闪、普通元素、文字分別有什么影響? 浮動(dòng)元素的特征:CSS設(shè)計(jì)flo...
    饑人谷_邵征鵬閱讀 533評(píng)論 0 0
  • 1.浮動(dòng)元素有什么特征摔吏?對(duì)父容器鸽嫂、其他浮動(dòng)元素、普通元素征讲、文字分別有什么影響? 特征:浮動(dòng)元素脫離普通文檔流据某,普通...
    山門龍龍閱讀 283評(píng)論 0 2