浮動和定位

浮動元素特征 對父容器捌蚊、其他浮動元素审姓、普通元素囤踩、文字的影響

浮動會使應(yīng)用此屬性的元素脫離文檔流旨椒。按指定的位置來移動位置。當(dāng)遇到其父元素或者相鄰的元素時(shí)即停下堵漱。此樣式可用于 塊級元素 或 行內(nèi)元素综慎。
使用float浮動樣式的行內(nèi)元素,會跟使用inline-block樣式一樣可以設(shè)置寬高.內(nèi)外邊距
對父容器影響:父容器無法感知浮動元素存在勤庐,可能會造成高度坍塌示惊,需要清除浮動。
對其他浮動元素: 浮動元素可以感知到浮動元素愉镰,高度不一樣可能會出現(xiàn)卡住現(xiàn)象米罚。
對普通元素:普通元素?zé)o法感知浮動元素存在,會被浮動元素遮蓋丈探。
文字和行內(nèi)元素: 文字和行內(nèi)元素可以感知到浮動元素录择,會形成環(huán)繞效果。
注: 若普通塊級元素先渲染碗降,浮動元素后渲染隘竭,浮動元素會感知到普通塊級元素的存在,無法覆蓋其上遗锣,一般先渲染浮動元素货裹,后渲染普通塊級元素嗤形。


清除浮動

清除浮動是解決父容器坍塌現(xiàn)象精偿。通常使用clear屬性或形成BFC。
clear屬性不允許被清除浮動的元素的左邊/右邊挨著浮動元素,底層原理是在被清除浮動的元素上邊或者下邊添加足夠的清除空間
在父元素的子元素最后添加一個(gè)空div笔咽,并對其設(shè)置樣式:clear:both;

.father:after {
      content: "";
      display: block;
      clear: both;
}

由于在子元素最后添加了空div搔预,并清除了浮動,因此父容器被撐開叶组,實(shí)現(xiàn)了在視覺上包圍浮動元素的效果拯田。
利用BFC來清除浮動:
因?yàn)锽FC可以包含浮動,因此可以讓父元素生成一個(gè)新的BFC從而包圍浮動的子元素甩十。
可以對父元素設(shè)定以下樣式之一生成新BFC
float 為 left | right
overflow 為 hidden | auto | scorll
display 為 table-cell | table-caption | inline-block | flex | inline-flex
position 為 absolute | fixed


定位方式

static
該關(guān)鍵字指定元素使用正常的布局行為船庇,即元素在文檔流中當(dāng)前的布局位置。此時(shí) top, right, bottom, left 和 z-index 屬性無效侣监。

relative
該關(guān)鍵字下鸭轮,元素先放置在未添加定位時(shí)的位置,再在不改變頁面布局的前提下調(diào)整元素位置(因此會在此元素未添加定位時(shí)所在位置留下空白)橄霉。使用場景:為絕對定位設(shè)定參照物或?qū)υ刈陨砦恢眠M(jìn)行局部調(diào)整窃爷。

absolute
不為元素預(yù)留空間,通過指定元素相對于最近的非 static 定位祖先元素的偏移姓蜂,來確定元素位置按厘。絕對定位的元素可以設(shè)置外邊距(margins),且不會與其他邊距合并钱慢。如果元素沒有已定位的祖先元素逮京,那么他的位置就相對于初始包含塊html來定位。使用場景:當(dāng)想讓元素參照特定參照物進(jìn)行定位時(shí)使用滩字。

fixed
不為元素預(yù)留空間造虏,而是通過指定元素相對于屏幕視口(viewport)的位置來指定元素位置。元素的位置在屏幕滾動時(shí)不會改變麦箍。打印時(shí)漓藕,元素會出現(xiàn)在的每頁的固定位置。fixed 屬性會創(chuàng)建新的層疊上下文挟裂。當(dāng)元素祖先的 transform 屬性非 none 時(shí)享钞,容器由視口改為該祖先。

sticky
盒位置根據(jù)正常流計(jì)算(這稱為正常流動中的位置)诀蓉,然后相對于該元素在流中的 flow root(BFC)和 containing block(最近的塊級祖先元素)定位栗竖。在所有情況下(即便被定位元素為 table 時(shí)),該元素定位均不對后續(xù)元素造成影響渠啤。當(dāng)元素 B 被粘性定位時(shí)狐肢,后續(xù)元素的位置仍按照 B 未定位時(shí)的位置來確定。position: sticky 對 table 元素的效果與 position: relative 相同沥曹。


z-index

z-index 屬性指定了一個(gè)元素及其子元素的 z-order份名。 當(dāng)元素之間重疊的時(shí)候碟联,z-order 決定哪一個(gè)元素覆蓋在其余元素的上方顯示。 通常來說 z-index 較大的元素會覆蓋較小的一個(gè)僵腺。

對于一個(gè)已經(jīng)定位的元素(即position屬性值是非static的元素)鲤孵,z-index 屬性指定:
元素在當(dāng)前堆疊上下文中的堆疊層級。
元素是否創(chuàng)建一個(gè)新的本地堆疊上下文辰如。
取值:初始值為auto
auto
元素不會建立一個(gè)新的本地堆疊上下文普监。當(dāng)前堆疊上下文中新生成的元素和父元素堆疊層級相同。
<integer>
整型數(shù)字是生成的元素在當(dāng)前堆疊上下文中的堆疊層級琉兜。元素同時(shí)會創(chuàng)建一個(gè)堆疊層級為0的本地堆疊上下文凯正。這意味著子元素的 z-indexes 不與元素外的其余元素的 z-indexes 進(jìn)行對比。

z-index: auto;
z-index: 0;
z-index: 100;
z-index: -1; /*使用負(fù)值降低優(yōu)先級*/

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

position: relative 相對定位是相對于自身原來的位置進(jìn)行偏移 并不會影響其它文檔流中的元素 原來占據(jù)的空間不會變
負(fù)margin 元素偏移之后會影響其它的元素 原來占據(jù)的空間也會發(fā)生改變


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

一個(gè)塊格式化上下文(block formatting context) 是Web頁面的可視化CSS渲染的一部分夺饲。它是塊盒子的布局發(fā)生奸汇,浮動互相交互的區(qū)域。
BFC的通俗理解:
首先BFC是一個(gè)名詞往声,是一個(gè)獨(dú)立的布局環(huán)境擂找,我們可以理解為一個(gè)箱子(實(shí)際上是看不見摸不著的),箱子里面物品的擺放是不受外界的影響的浩销。轉(zhuǎn)換為BFC的理解則是:BFC中的元素的布局是不受外界的影響贯涎,并且 在一個(gè)BFC中,塊盒與行盒(行盒由一行中所有的內(nèi)聯(lián)元素所組成)都會垂直的沿著其父元素的邊框排列

一個(gè)塊格式化上下文由以下之一創(chuàng)建:
根元素或其它包含它的元素
浮動 (元素的 float 不是 none)
絕對定位的元素 (元素具有 position 為 absolute 或 fixed)
內(nèi)聯(lián)塊 inline-blocks (元素具有 display: inline-block)
表格單元格 (元素具有 display: table-cell慢洋,HTML表格單元格默認(rèn)屬性)
表格標(biāo)題 (元素具有 display: table-caption, HTML表格標(biāo)題默認(rèn)屬性)
塊元素具有overflow 塘雳,且值不是 visible
display: flow-root

BFC容器是一個(gè)隔離的容器,和其他元素互不干擾普筹;所以我們可以用觸發(fā)兩個(gè)元素的BFC來解決垂直邊距折疊問題败明。

假設(shè),一個(gè) div容器 它設(shè)置了浮動...那么此時(shí)它的父元素是不會有任何高度的太防,它將不會去包含已經(jīng)浮動的子元素妻顶,那么此時(shí)可以通過給其添加一個(gè) overflow:hidden,在容器中創(chuàng)建一個(gè)新的BFC蜒车。那么這個(gè)將包含浮動的子元素讳嘱,它的高度可擴(kuò)展到可以包含它的子元素,這些元素會回到頁面的常規(guī)文檔流酿愧。

如果我們正在創(chuàng)建的一個(gè)多列布局占滿了整個(gè)容器的寬度沥潭,在某些瀏覽器中最后一列有時(shí)候?qū)粩D到下一行。會發(fā)生這樣可能是因?yàn)闉g覽器舍入(取整)了列的寬度使得總和的寬度超過了容器的寬度嬉挡。然而钝鸽,如果我們在一個(gè)列的布局中建立了一個(gè)新的BFC呼渣,它將會在前一列填充完之后的后面占據(jù)所剩余的空間。


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

場景:
同一個(gè)BFC內(nèi)仁连,且同處于普通流中的垂直相鄰元素外邊距合并。
父子元素的外邊距合并阱穗。如果塊級父元素中饭冬,不存在border-top、padding-top揪阶、inline content昌抠、 清除浮動 這四條屬性,會發(fā)生上外邊距合并;若塊級父元素的 margin-bottom 與它的最后一個(gè)子元素的margin-bottom 之間沒有父元素的 border鲁僚、padding炊苫、inline content、height冰沙、min-height侨艾、 max-height 分隔時(shí),就會發(fā)生 下外邊距合并 現(xiàn)象拓挥。
空元素的外邊距合并唠梨。如果存在一個(gè)空的塊級元素,其 border侥啤、padding当叭、inline content、height盖灸、min-height 都不存在蚁鳖。那么此時(shí)它的上下邊距中間將沒有任何阻隔,此時(shí)它的上下外邊距將會合并赁炎。

合并規(guī)則:
兩個(gè)margin都是正值的時(shí)候才睹,取兩者的最大值;
當(dāng) margin 都是負(fù)值的時(shí)候甘邀,取的是其中絕對值較大的琅攘,然后,從0位置松邪,負(fù)向位移坞琴;
當(dāng)有正有負(fù)的時(shí)候,相加的和逗抑。
所有毗鄰的margin要一起參與運(yùn)算剧辐,不能分步進(jìn)行寒亥。

不讓相鄰元素外邊距合并的方法:
被非空內(nèi)容、padding荧关、border 或 clear 分隔開溉奕。
不在一個(gè)普通流中或一個(gè)BFC中。
margin在垂直方向上不毗鄰忍啤。


c2 和 c3 的上邊距合并為30px

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末加勤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子同波,更是在濱河造成了極大的恐慌鳄梅,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件未檩,死亡現(xiàn)場離奇詭異戴尸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)冤狡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門孙蒙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人悲雳,你說我怎么就攤上這事马篮。” “怎么了怜奖?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵浑测,是天一觀的道長。 經(jīng)常有香客問我歪玲,道長迁央,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任滥崩,我火速辦了婚禮岖圈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钙皮。我一直安慰自己蜂科,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布短条。 她就那樣靜靜地躺著导匣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茸时。 梳的紋絲不亂的頭發(fā)上贡定,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音可都,去河邊找鬼缓待。 笑死蚓耽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的旋炒。 我是一名探鬼主播步悠,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瘫镇!你這毒婦竟也來了鼎兽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤汇四,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后踢涌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體通孽,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年睁壁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了背苦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡潘明,死狀恐怖行剂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情钳降,我是刑警寧澤厚宰,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站遂填,受9級特大地震影響铲觉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吓坚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一撵幽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧礁击,春花似錦盐杂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挚躯,卻和暖如春测垛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背秧均。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工食侮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留号涯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓锯七,卻偏偏與公主長得像链快,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子眉尸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

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

  • 浮動元素有什么特征疫赎?對父容器、其他浮動元素洪燥、普通元素轻姿、文字分別有什么影響?浮動的元素會脫離文檔流,向左或者向右移動...
    饑人谷_wanpp閱讀 671評論 0 49
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案袱蜡? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,748評論 1 92
  • 浮動元素有什么特征丝蹭?對父容器、其他浮動元素坪蚁、普通元素奔穿、文字分別有什么影響? 浮動元素會從普通流中取出,浮動到左邊或...
    LeeoZz閱讀 391評論 0 1
  • 1. 浮動元素有什么特征敏晤?對父容器贱田、其他浮動元素、普通元素嘴脾、文字分別有什么影響? 浮動元素:元素脫離正常的文檔流男摧,...
    lingfighting閱讀 798評論 1 4
  • 1. 浮動元素有什么特征?對父容器译打、其他浮動元素彩倚、普通元素、文字分別有什么影響? 浮動元素會脫離文檔流(不會對普通...
    727上上上閱讀 414評論 0 0