浮動定位BFC邊距合并

1. 浮動元素的特征姓蜂,對其他浮動元素、普通元素俊扳、文字的影響

浮動模型是一種可視化格式模型,浮動元素可以左右移動(根據float屬性值而定)猛遍,直到它的外邊緣碰到包含框或者另一個浮動元素的框的邊緣馋记。浮動元素不在文檔的普通流中,文檔的普通流中的元素表現的就像浮動元素不存在一樣.

  1. 對父元素的影響:正常情況下即在沒有浮動的時候懊烤,父元素的高度由子元素來撐開梯醒,元素浮動之后,父元素中好像什么都沒了腌紧,高度消失茸习。
  2. 對其他浮動元素的影響:多個浮動元素相鄰,如果包含塊太窄無法容納水平排列的全部浮動元素壁肋,那么其它浮動元素會向下移動号胚,直到有足夠的空間籽慢,而如果浮動元素的高度不同,那么向下移動的時候可能會被卡住猫胁。
  3. 對普通元素的影響:普通元素在占據浮動元素原來占據的空間箱亿,并被浮動元素遮擋。
  4. 文字的影響:文字可以發(fā)現浮動元素弃秆,并留出空間届惋。

2.清除浮動指什么?如何清除浮動菠赚?

清除浮動是指消除浮動元素對其父元素因浮動造成的高度塌陷的問題脑豹。

  1. 在父元素最后添加一個空的div,并設置屬性clear:both.但是這種方法并不好衡查,會添加一個無意義的標簽瘩欺。
  2. BFC清除,給父元素添加以下屬性使其生成一個BFC包圍浮動元素
  3. float:left/right
  4. overflow:hidden/auto/scrool
  5. display: table-cell / table-caption / inline-block
  6. position: absolute / fixed
  7. 最常見的最實用的清除浮動方式和1類似拌牲,不過是用偽元素代替div击碗,給父元素添加一個類,如clearfix们拙,再給這個類添加以下樣式:
.clearfix{
    *zoom:1;   /*使ie6稍途,7的hasLayout為true,達到和BFC相同效果*/
}
.clearfix:after{
    content:"";
    display:table;
    clear:both;
}

3.定位方式

| 方式 | 屬性 | 參考點 | 使用場景
| ---
|static| 默認文檔流,不定位 | / | 正常文檔流
| relative | 生成相對定位的元素砚婆,相對于元素本身正常位置進行定位 | 本身正常位置 | 為絕對定位設定參照物或對元素自身位置進行局部調整
| absolute | 生成絕對定位元素械拍,相對于static定位以外的第一個祖先元素(offset parent)進行定位,元素的位置通過left,top,right以及bottom屬性進行規(guī)定 | 非static定位的第一個祖先元素 | 當想讓元素參照特定參照物進行定位時使用
| fixed | 生成絕對定位的元素,相對于瀏覽器窗口進行定位装盯。元素的位置通過left,top,right以及bottom屬性進行規(guī)定 | viewport | 當需要相對于viewport進行定位時使用

4.z-index的作用

z-index是有定位屬性relative/absolute/fixed的元素才起作用坷虑,值越大的越排在上面,z-index值大的定位元素可以遮擋住值小的元素埂奈。也就是說z-index的使用要配合position:relative/absolute/fixed來使用迄损。

補充:z-index的比較是在同級元素之間進行,具體可見例子:http://js.jirengu.com/ceheqetofu/2/edit
d2的z-index最大账磺,可是并不是在最上面芹敌,可見是先比較都是父級且為兄弟元素d1和d3的層級關系。還有一點比較在意垮抗,如果d1的z-index不設置氏捞,那么就比較d2與d3的z-index http://js.jirengu.com/mesupolozo/4/edit 。大多情況是比較兄弟 元素之間的層級的

5.position:relative和負margin使元素偏移的區(qū)別

  • position:relative元素偏移前的空間還保留在那冒版,視覺上發(fā)生偏移液茎,也就是說這種方式不會影響文檔流。
  • 負margin是真正的發(fā)生了偏移,原來的位置不復存在捆等,影響了文檔流滞造。

6.BFC是什么?如何生成栋烤?有什么作用谒养?

  • BFC(Block Format Content),即塊級格式化上下文班缎。對浮動蝴光、定位(絕對定位她渴、固定定位)元素达址、塊級容器(如inline-block、 table-cell趁耗、table-caption)并不是塊級盒子沉唠,還包括那些overflow屬性值取值visible以外的塊級盒子,會為它們的內容創(chuàng)建一個新的塊級格式化上下文苛败。

  • 生成BFC可以給元素加以下屬性

    1. float:left/right
    2. overflow:hidden/auto/scrool
    3. display: table-cell / table-caption / inline-block
    4. position: absolute / fixed
  • BFC的作用

    1. BFC可以解決margin重疊問題满葛。margin重疊是指處于同一個BFC的相鄰元素、嵌套元素罢屈,只要它們之間沒有阻擋(如:邊框嘀韧、非空內容、padding等)就會發(fā)生margin重疊缠捌。這時只要讓其中一個元素生成新的BFC就能解決margin重疊問題锄贷。
    2. BFC可以清除浮動影響。因為BFC可以包含浮動曼月,所以讓父容器生成新的BFC可以讓父容器在視覺上包圍了浮動的子元素谊却,因而清除了子元素浮動造成父容器高度塌陷問題。

7.在什么場景下會出現外邊距合并哑芹?如何合并炎辨?如何不讓相鄰元素外邊距合并?

外邊距合并:當兩個垂直外邊距相遇時聪姿,即當一個元素出現在另一個元素上面時碴萧,第一個元素的下外邊距與第二個元素的上外邊距會發(fā)生合并,它們將形成一個外邊距合并后的外邊距的高度等于兩個發(fā)生合并的外邊距的高度中的較大者末购。

  1. 相鄰兄弟元素
    如例子中 http://js.jirengu.com/sitinevulo/2/edit 勿决,總高度是350px,div1高200px,div2高100px,div1的下邊距是50px招盲,常理來說低缩,此時div2的上邊距為0才能保證div2不超出大div的范圍,但例子中div2也確實有20px的上邊距,結果是即使有20px的上邊距div2也沒有超出大div咆繁,原因就是邊距發(fā)生了重疊讳推,并取了其中較大者。要使其不合并玩般,就如下面例子 http://js.jirengu.com/najuvogowa/2/edit 給div2添加float屬性生成新的BFC即可
  2. 父子元素
    如例 http://js.jirengu.com/bakobovopa/2/edit ,大div沒有上邊距银觅,div1有上邊距50px,兩者合并坏为,取了較大值div1的上邊距50px究驴,所以大div距離頂部50px,解決方法同樣的匀伏,給div1添加float屬性即可http://js.jirengu.com/zoguxodayo/2/edit

補充:當要合并的margin其中一個為負值的時候洒忧,要計算一下,不是簡單的取大值(正值够颠,負值當然比正值形跏獭),計算方法相加履磨,得出最終的合并后的margin值 http://js.jirengu.com/hibetateyo/2/edit 蛉抓。當兩個都為負值的時候,就取絕對值大margin值那個負margin http://js.jirengu.com/zezesuyaje/2/edit 剃诅。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末巷送,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子矛辕,更是在濱河造成了極大的恐慌笑跛,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件如筛,死亡現場離奇詭異堡牡,居然都是意外死亡,警方通過查閱死者的電腦和手機杨刨,發(fā)現死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門晤柄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妖胀,你說我怎么就攤上這事芥颈。” “怎么了赚抡?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵爬坑,是天一觀的道長。 經常有香客問我涂臣,道長盾计,這世上最難降的妖魔是什么售担? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮署辉,結果婚禮上族铆,老公的妹妹穿的比我還像新娘。我一直安慰自己哭尝,他們只是感情好哥攘,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著材鹦,像睡著了一般逝淹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上桶唐,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天栅葡,我揣著相機與錄音,去河邊找鬼莽红。 笑死妥畏,一個胖子當著我的面吹牛邦邦,可吹牛的內容都是我干的安吁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼燃辖,長吁一口氣:“原來是場噩夢啊……” “哼鬼店!你這毒婦竟也來了?” 一聲冷哼從身側響起黔龟,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤妇智,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后氏身,有當地人在樹林里發(fā)現了一具尸體巍棱,經...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年蛋欣,在試婚紗的時候發(fā)現自己被綠了航徙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡陷虎,死狀恐怖到踏,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情尚猿,我是刑警寧澤窝稿,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站凿掂,受9級特大地震影響伴榔,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一踪少、第九天 我趴在偏房一處隱蔽的房頂上張望骗灶。 院中可真熱鬧,春花似錦秉馏、人聲如沸耙旦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽免都。三九已至,卻和暖如春帆竹,著一層夾襖步出監(jiān)牢的瞬間绕娘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工栽连, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留险领,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓秒紧,卻偏偏與公主長得像绢陌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子熔恢,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內容

  • relative:生成相對定位的元素脐湾,通過top,bottom,left,right的位置相對于其正常位置進行定位...
    zx9426閱讀 930評論 0 2
  • 1. 浮動元素有什么特征?對父容器叙淌、其他浮動元素秤掌、普通元素、文字分別有什么影響? 浮動元素特征: 浮動元素會脫離正...
    billa_8f6b閱讀 218評論 0 0
  • 浮動元素有什么特征获黔?對父容器蚀苛、其他浮動元素、普通元素玷氏、文字分別有什么影響? 特征: 脫離正常文檔流堵未,沿其容器的左側...
    _Dot912閱讀 706評論 0 3
  • 問答 1.浮動元素有什么特征?對父容器盏触、其他浮動元素渗蟹、普通元素块饺、文字分別有什么影響? 浮動元素的特征:文字環(huán)繞浮動...
    liushaung閱讀 375評論 0 3
  • 1.浮動元素有什么特征?對父容器雌芽、其他浮動元素授艰、普通元素、文字分別有什么影響? 特征:浮動元素脫離普通文檔流世落,普通...
    山門龍龍閱讀 283評論 0 2