浮動定位BFC邊距合并

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

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

特征:

  1. 塊級元素浮動將并排顯示,不再獨占一行
  2. 內(nèi)聯(lián)樣式浮動將支持設置寬高,不僅支持margin-left(right),而且開始支持margin-top(bottom)
  3. 浮動元素默認內(nèi)容撐開寬度
  4. 浮動元素脫離正常的文檔流
  5. 浮動元素提升半層級

影響

對父容器: 當元素設置為浮動時,父容器會當做它不存在,此時容易造成塌陷。
其他浮動元素: 如果包含塊兒太窄無法容納水平排列的三個浮動元素,那么其它浮動塊兒向下移動 ,直到有足夠的空間,如果浮動元素的高度不同,那么向下移動的時候可能被 卡住
普通元素: 浮動會讓元素脫離普通流, 如果浮動的元素后面有一個文檔流中元素,那么這個元素的框會表現(xiàn)的像浮動元素不存在,但是框的文本內(nèi)容會受到浮動元素的影響,會移動以留出空間.用術語說就是浮動元素旁邊的行框被縮短,從而給浮動元素流出空間,因而行框圍繞浮動框
文字: 對于文字來說,能感知到浮動元素的存在,如果位置足夠,就能夠?qū)崿F(xiàn)文本圍繞的效果。
普通元素覆蓋和文字圍繞demo

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

清除浮動: 解決浮動父容器高度塌陷問題。

清除浮動方法:
1、最后添加一個空div,對它清理。缺點是增加了一個無意義的標簽。 加div
2、使用clear:both(left,right)
3、使用BFC清除浮動

  /*方法1*/ ie可用
  .clearfix{
      *zoom:1;
  }


  /*方法2*/ 常用方法,但是ie沒有after偽元素

  .clearfix:after{
      content:"";
      display:table;
      clear:both;
  }

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

屬性 參考點 使用場景
inherit 規(guī)定應該從父元素繼承 position 屬性的值 原始位置 很少用
static 默認值,沒有定位,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明) 原始位置 很少用
relative 生成相對定位的元素 相對于元素本身正常位置進行定位。因此,left:20px 會向元素的 left 位置添加20px 當元素需要做少量調(diào)整時
absolute 生成絕對定位的元素 相對于static定位以外的第一個祖先元素(offset parent)進行定位。 當需要做頁面垂直水平居中時
fixed 生成絕對定位的元素 相對于瀏覽器窗口進行定位。 當需要在瀏覽器內(nèi)做欄目時
sticky CSS3新屬性,表現(xiàn)類似position:relative和position:fixed的合體 在目標區(qū)域在屏幕中可見時,它的行為就像position:relative; 而當頁面滾動超出目標區(qū)域時,它的表現(xiàn)就像position:fixed,它會固定在目標位置。 很少用,兼容性差

CSS有三種基本的定位機制:普通流,浮動,絕對定位(absolute,fixed)
1、普通流是默認定位方式,在普通流中元素框的位置由元素在html中的位置決定,這也是我們最常見的方式,其中position: static與position:relative屬于普通流的定位方式
2、浮動定位機制
3、絕對定位包括 absolute和 fixed

浮動元素:會對其他浮動元素產(chǎn)生影響,會對普通流元素的文本產(chǎn)生影響
絕對定位:不會

絕對定位寬度: 絕對定位寬度是收縮的,如果想撐滿父容器,可以設置 width: 100%
清除浮動: 絕對定位能形成 BFC 可用來清除浮動 可用來阻止外邊距合并

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

定義: z-index 屬性設置元素的堆疊順序。擁有更高堆疊順序的元素總是會處于堆疊順序較低的元素的前面。
注釋:元素可擁有負的 z-index 屬性值。
注釋:Z-index 僅能在定位元素上奏效(例如 position:absolute;)!
說明:
該屬性設置一個定位元素沿 z 軸的位置,z 軸定義為垂直延伸到顯示區(qū)的軸。如果為正數(shù),則離用戶更近,為負數(shù)則表示離用戶更遠。Z-index 僅能在定位元素(position:relative/absolute/fixed)上奏效。

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

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

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

BFC的全稱是 Block Format Content,塊級格式化上下文。通俗來講就是BFC是一個隔離的獨立容器,容器里面的子元素不會影響到外面的子元素,反之亦然。

如何生成BFC:

一個塊格式化上下文由以下之一創(chuàng)建:

  1. 根元素或其它包含它的元素
  2. 浮動元素 (元素的 float 不是 none)
  3. 絕對定位元素 (元素具有 position 為 absolute 或 fixed)
  4. 內(nèi)聯(lián)塊 (元素具有 display: inline-block)
  5. 表格單元格 (元素具有 display: table-cell,HTML表格單元格默認屬性)
  6. 表格標題 (元素具有 display: table-caption, HTML表格標題默認屬性)
  7. 具有overflow 且值不是 visible 的塊元素
  8. display: flow-root
  9. column-span: all 應當總是會創(chuàng)建一個新的格式化上下文,即便具有 column-span: all 的元素并不被包裹在一個多列容器中。

作用: BFC 特性

  1. BFC會阻止垂直外邊距(margin-top、margin-bottom)折疊
    按照BFC的定義,只有同屬于一個BFC時,兩個元素才有可能發(fā)生垂直Margin的重疊,這個包括相鄰元素,嵌套元素,只要他們之間沒有阻擋(例如邊框,非空內(nèi)容,padding等)就會發(fā)生margin重疊。
    因此要解決margin重疊問題,只要讓它們不在同一個BFC就行了,但是對于兩個相鄰元素來說,意義不大,沒有必要給它們加個外殼,但是對于嵌套元素來說就很有必要了,只要把父元素設為BFC就可以了。這樣子元素的margin就不會和父元素的margin發(fā)生重疊
  2. BFC不會重疊浮動元素
  3. BFC可以包含浮動。demo

局限性:
使用BFC使用float的時候會使父容器長度縮短,而且還有個重要缺陷——父容器float解決了其塌陷問題,那么父容器的父容器怎么辦?overflow屬性會影響滾動條和絕對定位的元素;position會改變元素的定位方式,這是我們不希望的,display這幾種方式依然沒有解決低版本IE問題。。。

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

外邊距合并: 外邊距合并指的是,當兩個垂直外邊距相遇時,它們將形成一個外邊距。
合并后的外邊距的高度不是 ”上面段落的下邊距“ 與 ”下面段落的上邊距“ 的 求和 ,而是兩者中的較大者。若都為負時,取絕對值大的。若出現(xiàn)一正一負的現(xiàn)象,則取兩者的和。(demo

image.png
image.png
image.png

清除外邊距合并

  1. 消除邊距合并的方式:形成BFC。但這里要注意的是,在形成BFC的方式中(float的值不為none,display的值為inline-block、table-cell、table-caption)這兩個能直接起效果。但(overflow的值為auto或者hidden)這個必須外面還要包裹一層父元素。
  2. 父子元素之間的外邊據(jù)合并
    消除邊距合并的方式一:給父元素加邊框
    消除邊距合并的方式二:給父元素加padding

父子外邊距合并的范例

例子

  1. alert效果
  2. 表單效果
  3. 模態(tài)框效果
  4. 導航欄效果
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

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

  • 一,浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響? 浮動模型是一種可視化格式模型,浮動...
    DeeJay_Y閱讀 896評論 0 4
  • relative:生成相對定位的元素,通過top,bottom,left,right的位置相對于其正常位置進行定位...
    zx9426閱讀 963評論 0 2
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,784評論 1 92
  • 1. 浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響? 浮動元素的特征:CSS設計flo...
    饑人谷_邵征鵬閱讀 573評論 0 0
  • 1.在什么場景下會出現(xiàn)外邊距合并?如何合并?如何不讓相鄰元素外邊距合并?給個父子外邊距合并的范例 概念:在CSS當...
    饑人谷_任磊閱讀 670評論 0 3