浮動定位BFC邊距合并

浮動元素有什么特征裂明?對父容器偶芍、其他浮動元素、普通元素取胎、文字分別有什么影響?

  • 浮動模型也是一種可視化格式模型展哭,浮動的框可以左右移動(根據(jù)float屬性值而定)湃窍,直到它的外邊緣碰到包含框或者另一個浮動元素的框的邊緣。浮動元素不在文檔的普通流中匪傍,文檔的普通流中的元素表現(xiàn)的就像浮動元素不存在一樣.
  • 對父容器的影響:如果父容器的子元素都是浮動元素您市,那么父容器會失去高度,在浮動元素之外役衡。視覺上茵休,父容器沒有包含住浮動的子元素。本次任務的最后一個代碼通過在父容器內(nèi)新增一個塊級普通流元素使父容器撐起所有元素
  • 其它浮動元素的影響:如果包含塊太窄無法容納水平排列的全部浮動元素手蝎,那么其它浮動元素會向下移動榕莺,直到有足夠的空間,而如果浮動元素的高度不同棵介,那么向下移動的時候可能會被卡住钉鸯。
  • 普通元素的影響:普通元素會視浮動元素不見,占據(jù)浮動元素原有的位置邮辽,但會被浮動元素遮罩唠雕。
  • 對文字的影響:文字會感知到浮動元素的存在,會留出空間逆巍,形成環(huán)繞效果及塘。

清除浮動指什么? 如何清除浮動? 兩種以上方法

  • 清除浮動就是解決父容器高度塌陷問題,通俗來講就是使父容器在視覺上包裹住子元素锐极,可以在父容器的最后面新增一個元素,也可以:
  /*方法1*/
  .clearfix{
      *zoom:1;
  }
  .clearfix:after{
      content:"";
      display:block;
      clear:left;
  }


  /*方法2*/
  .clearfix{
    *zoom:1;
  }
  .clearfix:after{
    content:"";
      display:table;
      clear:both;/*原理類似于給父容器內(nèi)部最底端新增一個元素*/
  }

雖然我們得出了一種瀏覽器兼容的靠譜解決方案芳肌,但這并不代表我們一定得用這種方式灵再,很多時候我們的父容器本身需要position:absolute等形成了BFC的時候我們可以直接利用這些屬性了,總而言之清理浮動兩種方式:利用 clear屬性亿笤、使父容器形成BFC

  • BFC會阻止垂直外邊距(margin-top翎迁、margin-bottom)折疊
    按照BFC的定義,只有同屬于一個BFC時净薛,兩個元素才有可能發(fā)生垂直Margin的重疊汪榔,這個包括相鄰元素,嵌套元素肃拜,只要他們之間沒有阻擋(例如邊框痴腌,非空內(nèi)容,padding等)就會發(fā)生margin重疊燃领。
    因此要解決margin重疊問題士聪,只要讓它們不在同一個BFC就行了,但是對于兩個相鄰元素來說猛蔽,意義不大剥悟,沒有必要給它們加個外殼灵寺,但是對于嵌套元素來說就很有必要,只要把父元素設為BFC就可以区岗。這樣略板,元素的margin就不會和父元素的margin發(fā)生重疊
    BFC不會重疊浮動元素
    BFC可以包含浮動
    可以利用“BFC可以包含浮動”這一特性來“清浮動”,這里其實說清浮動已經(jīng)不再合適慈缔,應該說包含浮動叮称。也就是說只要父容器形成BFC就可以,以下幾種方式可以形成BFC
  • float為 left|right
  • overflow為 hidden|auto|scroll
  • display為 table-cell|table-caption|inline-block
  • position為 absolute|fixed
    對父容器添加一些屬性可以形成BFC達到“清浮動”效果胀糜,例如:
<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>

用BFC使用float的時候會使父容器長度縮短颅拦,而且還有個重要缺陷——父容器float解決了其塌陷問題,那么父容器的父容器怎么辦教藻?overflow屬性會影響滾動條和絕對定位的元素距帅;position會改變元素的定位方式,這是我們不希望的括堤,display這幾種方式依然沒有解決低版本IE問題
IE6碌秸、7內(nèi)有個hasLayout的概念,當元素的hasLayout屬性值為true的時候會達到和BFC類似的效果悄窃,元素負責本身及其子元素的尺寸設置和定位讥电。 下面這些設置可以使元素hasLayout為true
position: absolute
float: left|right
display: inline-block
width: 除 “auto” 外的任意值
height: 除 “auto” 外的任意值
zoom: 除 “normal” 外的任意值
writing-mode: tb-rl
在IE7中使用overflow: hidden|scroll|auto 也可以使hasLayout為true

有幾種定位方式,分別是如何實現(xiàn)定位的轧抗,參考點是什么恩敌,使用場景是什么?

屬性
inherit 規(guī)定應該從父元素繼承 position 屬性的值
static 默認值横媚,沒有定位纠炮,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)
relative 生成相對定位的元素,相對于元素本身正常位置進行定位,因此灯蝴,left:20px 會向元素的 left位置添加20px
absolute 生成絕對定位的元素恢口,相對于static定位以外的第一個祖先元素(offset parent)進行定位,元素的位置通過 left, top, right 以及 bottom 屬性進行規(guī)定
fixed 生成絕對定位的元素,相對于瀏覽器窗口進行定位穷躁。元素的位置通過 left, top, right 以及 bottom屬性進行規(guī)定
sticky CSS3新屬性耕肩,表現(xiàn)類似position:relative和position:fixed的合體,在目標區(qū)域在屏幕中可見時问潭,它的行為就像position:relative; 而當頁面滾動超出目標區(qū)域時猿诸,它的表現(xiàn)就像position:fixed,它會固定在目標位置

fixed
固定定位睦授,參照位置是瀏覽器窗口的左上角两芳,即坐標點為(0px, 0px)
absolute
絕對定位,參展位置是離當前元素最近的定位方式為fixed,absolute,relative的祖先原則的左上角

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

在 CSS 2.1中, 所有的盒模型元素都處于三維坐標系中去枷。 除了我們常用的橫坐標和縱坐標怖辆, 盒模型元素還可以沿著“z軸”層疊擺放是复, 當他們相互覆蓋時, z軸順序就變得十分重要
這意味著其實CSS允許你在現(xiàn)有的渲染引擎上層疊的擺放盒模型元素竖螃。 所有的層都可以用一個整數(shù)(z軸順序)來表明當前層在z軸的位置淑廊。 數(shù)字越大, 元素越接近觀察者特咆。Z軸順序用CSS的z-index
屬性來指定季惩。
要特別注意:
z-index僅在設置了position非static屬性的元素生效
z-index的值只能在兄弟元素之間比較
z-index默認值為auto,則不建立層疊上下文腻格。設置為0則會建立層疊上下文

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

  • position:relative;只相對自己原本位置發(fā)生偏移画拾,不影響其它普通流中元素的位置。
  • margin:除了讓元素自身發(fā)生偏移還影響其它普通流中的元素菜职。

BFC 是什么青抛?如何生成 BFC?BFC 有什么作用酬核?舉例說明

浮動元素和絕對定位元素蜜另,非塊級盒子的塊級容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不為“visiable”的塊級盒子嫡意,都會為他們的內(nèi)容創(chuàng)建新的BFC(塊級格式上下文)举瑰。
在BFC中,盒子從頂端開始垂直地一個接一個地排列蔬螟,兩個盒子之間的垂直的間隙是由他們的margin 值所決定的此迅。在一個BFC中,兩個相鄰的塊級盒子的垂直外邊距會產(chǎn)生折疊旧巾。
在BFC中邮屁,每一個盒子的左外邊緣(margin-left)會觸碰到容器的左邊緣(border-left)(對于從右到左的格式來說,則觸碰到右邊緣)菠齿。

  • 對元素設置以下屬性就可以生成BFC:
    float: left | right;
    overflow: hidden | auto | scroll;
    display: table-cell | table-caption | inline-block;
    position: absolute | fixed;
  • BFC的作用有:
    (1) 解決margin重疊問題。所謂margin重疊是指處于同一個BFC的相鄰元素坐昙、嵌套元素绳匀,只要它們之間沒有阻擋(如:邊框、非空內(nèi)容炸客、padding等)就會發(fā)生margin重疊疾棵。這是只要讓其中一個元素生成新的BFC就能解決margin重疊問題。
    (2) 清除浮動痹仙。因為BFC可以包含浮動是尔,所以讓父容器生成新的BFC可以讓父容器在視覺上包圍了浮動的子元素,因而清除了浮動

在什么場景下會出現(xiàn)外邊距合并开仰?如何合并拟枚?如何不讓相鄰元素外邊距合并薪铜?給個父子外邊距合并的范例

image.png
image.png

image.png

若該元素垂直方向上的兄弟元素也有外邊距俯艰,那么垂直方向的外邊距依舊會發(fā)生合并

image.png

特別地,

  • 當 margin 都是負值的時候锌订,取的是其中絕對值較大的竹握,然后,從0位置瀑志,負向位移涩搓;
  • 當有正有負的時候,先取出負 margin 中絕對值中最大的劈猪,然后昧甘,和正 margin 值中最大的 -
    margin 相加。
  • 所有毗鄰的margin要一起參與運算战得,不能分步進行充边。

代碼1

代碼2

代碼3

代碼4

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市常侦,隨后出現(xiàn)的幾起案子浇冰,更是在濱河造成了極大的恐慌,老刑警劉巖聋亡,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肘习,死亡現(xiàn)場離奇詭異,居然都是意外死亡坡倔,警方通過查閱死者的電腦和手機漂佩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來罪塔,“玉大人投蝉,你說我怎么就攤上這事≌骺埃” “怎么了瘩缆?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長佃蚜。 經(jīng)常有香客問我庸娱,道長着绊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任涌韩,我火速辦了婚禮畔柔,結果婚禮上,老公的妹妹穿的比我還像新娘臣樱。我一直安慰自己靶擦,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布雇毫。 她就那樣靜靜地躺著玄捕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棚放。 梳的紋絲不亂的頭發(fā)上枚粘,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音飘蚯,去河邊找鬼馍迄。 笑死,一個胖子當著我的面吹牛局骤,可吹牛的內(nèi)容都是我干的攀圈。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼峦甩,長吁一口氣:“原來是場噩夢啊……” “哼赘来!你這毒婦竟也來了?” 一聲冷哼從身側響起凯傲,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤犬辰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后冰单,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體幌缝,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年诫欠,在試婚紗的時候發(fā)現(xiàn)自己被綠了狮腿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡呕诉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吃度,到底是詐尸還是另有隱情甩挫,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布椿每,位于F島的核電站伊者,受9級特大地震影響英遭,放射性物質發(fā)生泄漏。R本人自食惡果不足惜亦渗,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一挖诸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧法精,春花似錦多律、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至帮碰,卻和暖如春相味,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背殉挽。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工丰涉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人斯碌。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓一死,卻偏偏與公主長得像,于是被迫代替她去往敵國和親输拇。 傳聞我的和親對象是個殘疾皇子摘符,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

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

  • relative:生成相對定位的元素,通過top,bottom,left,right的位置相對于其正常位置進行定位...
    zx9426閱讀 929評論 0 2
  • 1.浮動元素有什么特征策吠?對父容器逛裤、其他浮動元素、普通元素猴抹、文字分別有什么影響? 特征:浮動元素脫離普通文檔流带族,普通...
    山門龍龍閱讀 283評論 0 2
  • 1. 浮動元素有什么特征跋理?對父容器择克、其他浮動元素、普通元素前普、文字分別有什么影響? 浮動元素的特征:CSS設計flo...
    饑人谷_邵征鵬閱讀 533評論 0 0
  • 1.浮動元素有什么特征肚邢?對父容器、其他浮動元素、普通元素骡湖、文字分別有什么影響? 任何定義為float的元素贱纠,都可以...
    QQQQQCY閱讀 257評論 0 0
  • 1.浮動元素有什么特征?對父容器响蕴、其他浮動元素谆焊、普通元素、文字分別有什么影響? 浮動元素不在文檔的普通流中浦夷,它可以...
    饑人谷_Young丶K閱讀 420評論 0 0