CSS浮動(dòng)和定位

浮動(dòng)元素有什么特征医舆?對(duì)父容器、其他浮動(dòng)元素酌泰、普通元素、文字分別有什么影響?
浮動(dòng)的元素會(huì)脫離文檔流匕累,向左或者向右移動(dòng)至包含塊內(nèi)邊緣或者同樣浮動(dòng)的元素外邊緣陵刹。文檔流中的普通元素察覺(jué)不到浮動(dòng)元素,但是其文本內(nèi)容卻能察覺(jué)到浮動(dòng)元素欢嘿,呈現(xiàn)出圍繞浮動(dòng)元素排列的表現(xiàn)方式衰琐。

  • 對(duì)父容器的影響:如果父容器中的元素都是浮動(dòng)元素巡验,那么父容器會(huì)失去它的高度

    title
    title

  • 對(duì)其他浮動(dòng)元素的影響:如果父元素的寬度不夠,父容器里的其他浮動(dòng)元素會(huì)向下移動(dòng)碘耳,直到位置足夠放下。

    title
    title

    如果浮動(dòng)元素的高度不同框弛,向下移動(dòng)的元素就會(huì)被比它高的元素卡住
    title
    title

  • 對(duì)普通元素的影響:文檔流中的普通元素察覺(jué)不到浮動(dòng)元素辛辨,但是其文本內(nèi)容卻能察覺(jué)到浮動(dòng)元素,呈現(xiàn)出圍繞浮動(dòng)元素排列的表現(xiàn)方式瑟枫。
    紅框左移,綠框沒(méi)有察覺(jué)到浮動(dòng)元素紅框的存著斗搞,位置沒(méi)有發(fā)生改變,綠框被覆蓋

    title
    title

    文本內(nèi)容卻能察覺(jué)到浮動(dòng)元素慷妙,呈現(xiàn)出圍繞浮動(dòng)元素排列的表現(xiàn)方式
    title
    title

  • 什么是文檔流僻焚?

文檔流是指按照從左到右、從上到下的布局方式膝擂,又稱普通流虑啤、正常流、標(biāo)準(zhǔn)文檔流架馋。
標(biāo)準(zhǔn)化的語(yǔ)言是:文檔流是瀏覽器按照 HTML 的內(nèi)容按順序解析并呈現(xiàn)狞山,遇到行內(nèi)元素就往行內(nèi)放,遇到塊級(jí)元素就空一行放置叉寂,一次排列萍启。

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

title
title

根據(jù)上圖可以看到,正常情況下屏鳍,父容器不管有沒(méi)有設(shè)置高度勘纯,其高度都會(huì)被里面的子元素?fù)纹饋?lái),但是現(xiàn)在父容器中都是浮動(dòng)元素钓瞭,他的高度就塌陷了驳遵,那么我里面可能原本設(shè)置了 背景, 圖片降淮,內(nèi)外邊距 就都不能正常顯示了超埋。因此我們就可以用清除浮動(dòng)的方式來(lái)將父容器正常顯示出來(lái)。

  • 如何清除浮動(dòng)呢
  1. 在文檔中添加一個(gè)元素佳鳖,給他設(shè)置一個(gè)樣式霍殴,clear:both;
    title
    title

    這種方法會(huì)在文檔的最后產(chǎn)生一個(gè)無(wú)意義標(biāo)簽,那么我們還可以用另一種方法寫系吩,css中在父容器的最后添加一個(gè):after
    title
    title

2.將父容器變成BFC

什么是BFC

BFC(Block formatting context)直譯為"塊級(jí)格式化上下文"来庭。它是一個(gè)獨(dú)立的渲染區(qū)域,只有Block-level box參與穿挨, 它規(guī)定了內(nèi)部的Block-level Box如何布局月弛,并且與這個(gè)區(qū)域外部毫不相干肴盏。

BFC布局規(guī)則

  • 內(nèi)部的Box會(huì)在垂直方向,一個(gè)接一個(gè)地放置
  • Box垂直方向的距離由margin決定帽衙。屬于同一個(gè)BFC的兩個(gè)相鄰Box的margin會(huì)發(fā)生重疊 每個(gè)元素的margin box的左邊菜皂, 與包含塊border box的左邊相接觸(對(duì)于從左往右的格式化,否則相反)厉萝。即使存在浮動(dòng)也是如此恍飘。
  • BFC的區(qū)域不會(huì)與float box重疊。
  • BFC就是頁(yè)面上的一個(gè)隔離的獨(dú)立容器谴垫,容器里面的子元素不會(huì)影響到外面的元素章母。反之也如此。
  • 計(jì)算BFC的高度時(shí)翩剪,浮動(dòng)元素也參與計(jì)算乳怎。

哪些元素會(huì)生成BFC?

  • 根元素
  • float: left|right
  • overflow: hidden|auto|scroll
  • display: table-cell|table-caption|inline-block
  • position: absolute|fixed
    參考文章

綜上所述,只要將父容器變成一個(gè)BFC前弯,就可以達(dá)到清除浮動(dòng)的效果了


title
title
屬性 描述
inherit 規(guī)定應(yīng)該從父元素繼承 position 屬性的值
static 默認(rèn)值,沒(méi)有定位蚪缀,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)
relative 生成相對(duì)定位的元素,相對(duì)于元素本身正常位置進(jìn)行定位,因此恕出,left:20px 會(huì)向元素的 left 位置添加20px
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的合體。由于兼容性不是很好狈醉,不推薦使用

有幾種定位方式廉油,分別是如何實(shí)現(xiàn)定位的,參考點(diǎn)是什么苗傅,使用場(chǎng)景是什么抒线?
CSS 定位 :Positioning屬性把元素放置到一個(gè)靜態(tài)的、相對(duì)的渣慕、絕對(duì)的嘶炭、或固定的位置中。屬性有以下幾種:

屬性 描述
inherit 規(guī)定應(yīng)該從父元素繼承 position 屬性的值
static 默認(rèn)值,沒(méi)有定位逊桦,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)
relative 生成相對(duì)定位的元素眨猎,相對(duì)于元素本身正常位置進(jìn)行定位,因此,left:20px 會(huì)向元素的 left 位置添加20px
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的合體兰迫。由于兼容性不是很好信殊,不推薦使用

css的定位方式基本有三種:普通流,相對(duì)定位汁果,絕對(duì)定位

  1. 普通流涡拘,相對(duì)定位(不會(huì)脫離文檔流)
  • 普通流是默認(rèn)定位方式,在普通流中元素框的位置由元素在html中的位置決定据德,元素position屬性為static或繼承來(lái)的static時(shí)就會(huì)按照普通流定位鲸伴,這也是我們最常見(jiàn)的方式
  • 相對(duì)定位比較簡(jiǎn)單,對(duì)應(yīng)position屬性的relative值晋控,如果對(duì)一個(gè)元素進(jìn)行相對(duì)定位,它將出現(xiàn)在他所在的位置上姓赤,然后可以通過(guò)設(shè)置垂直或水平位置赡译,讓這個(gè)元素相對(duì)于它自己移動(dòng),在使用相對(duì)定位時(shí)不铆,無(wú)論元素是否移動(dòng)蝌焚,元素在文檔流中占據(jù)原來(lái)空間,只是表現(xiàn)出來(lái)的位置會(huì)改變
    普通文檔流的排列方式:


    title
    title

相對(duì)定位:position:relative;

title
title

2.絕對(duì)定位誓斥,固定定位(會(huì)脫離文檔流)

絕對(duì)定位
絕對(duì)定位的元素的位置是相對(duì)于距離最近的非static祖先元素位置決定的只洒。如果元素沒(méi)有已定位的祖先元素,那么他的位置就相對(duì)于初始包含塊html來(lái)定位劳坑。
因?yàn)榻^對(duì)定位與文檔流無(wú)關(guān)毕谴,所以絕對(duì)定位的元素可以覆蓋頁(yè)面上的其他元素,可以通過(guò)z-index屬性控制疊放順序距芬,z-index越高涝开,元素位置越靠上。也可以理解為層級(jí)框仔。

title
title

title
title

fixed固定定位是屬于絕對(duì)定位中的一種舀武。一般使用場(chǎng)景,例如:導(dǎo)航欄离斩,右側(cè)工具欄银舱,底部回到頂部按鈕等。它的定位是相對(duì)于瀏覽器的視窗口(viewport)來(lái)定的跛梗,而其他的絕對(duì)定位則是相遇于文檔(html)定位的寻馏。

title
title

參考文章

z-index 有什么作用? 如何使用?
z-index 屬性設(shè)置元素的堆疊順序。擁有更高堆疊順序的元素總是會(huì)處于堆疊順序較低的元素的前面核偿。

  • 元素可擁有負(fù)的 z-index 屬性值操软。
  • Z-index 僅能在定位元素上奏效(例如 position:absolute;

position:relative和負(fù)margin都可以使元素位置發(fā)生偏移?二者有什么區(qū)別
position:relative是在自身的文檔流中讓自己顯示上發(fā)生偏移,文檔流中其他元素不會(huì)因?yàn)樗钠贫a(chǎn)生位置上的變化宪祥;負(fù)margin是讓元素的外邊框產(chǎn)生空隙從而發(fā)生偏移聂薪,此偏移會(huì)影響到元素后面的元素的位置家乘。

BFC 是什么?如何生成 BFC藏澳?BFC 有什么作用仁锯?舉例說(shuō)明

BFC(Block formatting context)直譯為"塊級(jí)格式化上下文"。它是一個(gè)獨(dú)立的渲染區(qū)域翔悠,只有Block-level box參與业崖, 它規(guī)定了內(nèi)部的Block-level Box如何布局,并且與這個(gè)區(qū)域外部毫不相干蓄愁。

以下元素都可以生成BFC

  • 根元素
  • float: left|right
  • overflow: hidden|auto|scroll
  • display: table-cell|table-caption|inline-block
  • position: absolute|fixed

BFC的作用:

  1. 清除內(nèi)部浮動(dòng)


    title
    title

    隨意使用一個(gè)元素生成BFC双炕,就能夠清除浮動(dòng)了

Paste_Image.png
  1. 防止垂直 margin 重疊


    title
    title

    可以讓兩個(gè)元素分別在不同的BFC下,那么兩個(gè)元素的邊距就不會(huì)被重疊了

Paste_Image.png

在什么場(chǎng)景下會(huì)出現(xiàn)外邊距合并撮抓?如何合并妇斤?如何不讓相鄰元素外邊距合并?給個(gè)父子外邊距合并的范例
當(dāng)兩個(gè)垂直外邊距(margin)相遇時(shí)丹拯,將形成一個(gè)外邊距合并站超,合并后的高度以這兩個(gè)外邊距中高度值較大值為準(zhǔn)。

外邊距合并:

  1. 相鄰的同胞元素
    title
    title

    阻止外邊距合并
  • 給元素加一個(gè)display:inline-block;(只針對(duì)當(dāng)前加的元素起效)
  • 給元素添加folat, position等
  1. 父元素與子元素(在父元素沒(méi)有邊框乖酬,padding等的情況下死相,最上面的元素的上邊距和最下面的元素下邊距與父元素發(fā)生合并)
Paste_Image.png

阻止外邊距合并

  • 父元素生成一個(gè)新的BFC, overflow, display等...
  • 給父元素加上一個(gè)邊框或者padding等..
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌溪烤,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钮惠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡七芭,警方通過(guò)查閱死者的電腦和手機(jī)素挽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)狸驳,“玉大人预明,你說(shuō)我怎么就攤上這事“夜浚” “怎么了撰糠?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)辩昆。 經(jīng)常有香客問(wèn)我阅酪,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任术辐,我火速辦了婚禮砚尽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辉词。我一直安慰自己必孤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布瑞躺。 她就那樣靜靜地躺著敷搪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪幢哨。 梳的紋絲不亂的頭發(fā)上赡勘,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音捞镰,去河邊找鬼闸与。 笑死,一個(gè)胖子當(dāng)著我的面吹牛曼振,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蔚龙,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼冰评,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了木羹?” 一聲冷哼從身側(cè)響起甲雅,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坑填,沒(méi)想到半個(gè)月后抛人,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脐瑰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年妖枚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苍在。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绝页,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出寂恬,到底是詐尸還是另有隱情续誉,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布初肉,位于F島的核電站酷鸦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜臼隔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一嘹裂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧躬翁,春花似錦焦蘑、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至宁舰,卻和暖如春拼卵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蛮艰。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工腋腮, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人壤蚜。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓即寡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親袜刷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子聪富,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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

  • 1.浮動(dòng)元素有什么特征?對(duì)父容器著蟹、其他浮動(dòng)元素墩蔓、普通元素、文字分別有什么影響? 浮動(dòng)元素不在文檔的普通流中萧豆,它可以...
    高進(jìn)哥哥閱讀 378評(píng)論 0 0
  • 浮動(dòng)元素的特征及影響 特征: 浮動(dòng)模型也是一種可視化格式模型奸披,浮動(dòng)的框可以左右移動(dòng)(根據(jù)float屬性值而定),直...
    Joey的企鵝閱讀 892評(píng)論 0 0
  • 1. 浮動(dòng)元素有什么特征涮雷?對(duì)父容器阵面、其他浮動(dòng)元素、普通元素洪鸭、文字分別有什么影響? 浮動(dòng)元素會(huì)脫離文檔流(不會(huì)對(duì)普通...
    727上上上閱讀 416評(píng)論 0 0
  • 一膜钓,浮動(dòng)元素有什么特征?對(duì)父容器卿嘲、其他浮動(dòng)元素颂斜、普通元素、文字分別有什么影響? 浮動(dòng)模型是一種可視化格式模型拾枣,浮動(dòng)...
    DeeJay_Y閱讀 874評(píng)論 0 4
  • relative:生成相對(duì)定位的元素沃疮,通過(guò)top,bottom,left,right的位置相對(duì)于其正常位置進(jìn)行定位...
    zx9426閱讀 943評(píng)論 0 2