前端學(xué)習(xí)任務(wù)十

文檔流的概念指什么?有哪種方式可以讓元素脫離文檔流?

  • 文檔流指窗體自上而下分成一行一行的形式,并且這一行行是從左到右的方式排放元素。
  • 絕對(duì)定位和浮動(dòng)可以讓元素脫離文檔流。

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

  • 清除浮動(dòng)指清除掉元素float屬性
  • 三種清除方式
  • 添加新的元素并且clear:both(padding不會(huì)受到影響)
    HTML:
<div class="outer">   
 <div class="div1">1</div>    
<div class="div2">2</div>    
<div class="div3">3</div>    
<div class="clear"></div>//添加一個(gè)div
</div>

CSS:

.clear{clear:both; height: 0; line-height: 0; font-size: 0}
  • 父級(jí)div定義 overflow: auto(img{display: none})
    HTML:
<div class="outer overflow"> //添加class=overflow   
  <div class="div1">1</div>    
  <div class="div2">2</div>    
  <div class="div3">3</div>   
</div> 

CSS:

.over-flow{overflow: auto; zoom: 1;} //zoom: 1; 是在處理兼容性問(wèn)題

注意:overflow有三個(gè)值,auto;hidden;visible。visible無(wú)法清除浮動(dòng),hidden雖然可以清除浮動(dòng),但是對(duì)SEO不友好。

  • :after 方法:(作用于浮動(dòng)元素的父元素)
.outer {zoom:1;}    /*==for IE6/7 Maxthon2==*/
.outer :after {clear:both;content:'.';display:block;width: 0;height: 0;visibility:hidden;}   /*==for FF/chrome/opera/IE8==*/

注意:

  1. clear:both;指清除所有浮動(dòng),content: '.'; display:block;對(duì)于FF/chrome/opera/IE8不能缺少;visibility:hidden;的作用是允許瀏覽器渲染它,但是不顯示出來(lái),這樣才能實(shí)現(xiàn)清楚浮動(dòng)。
  2. 下一標(biāo)簽直接清浮動(dòng)兄弟標(biāo)簽浮動(dòng)時(shí),在下一標(biāo)簽的屬性中直接寫入清除clear:both;這樣就可以清除以上標(biāo)簽的浮動(dòng)而不用加入空標(biāo)簽來(lái)清除浮動(dòng)。

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

  • static(默認(rèn))
    當(dāng)你沒(méi)有為一個(gè)元素(例如div)指定定位方式時(shí),默認(rèn)為static,也就是按照文檔的流式(flow)定位,將元素放到一個(gè)合適的地方。所以在不同的分辨率下,采用流式定位能很好的自適合,取得相對(duì)較好的布局效果。
  • relative(相對(duì)定位)
    元素框偏移某個(gè)距離(利用top,bottom,left,right)。元素仍保持其未定位前的形狀,它原本所占的空間仍保留。(仍然在文檔流中)。偏移的參考點(diǎn)是相對(duì)于自己本身原來(lái)的位置
  • absolute(絕對(duì)定位)
    如果你想在一個(gè)文檔(Document)中將一個(gè)元素放至指定位置,可以使用absolute來(lái)定位,將該元素的position設(shè)置為absolute,同時(shí)使用top,bottom,left,right定位。絕對(duì)定位會(huì)脫離文檔流,該元素原來(lái)的空間會(huì)被占據(jù)。absolute定位的參照物是“上一個(gè)定位過(guò)的父元素(static不算)”。
  • fixed
    元素框的表現(xiàn)類似于將 position 設(shè)置為 absolute,不過(guò)其包含塊是視窗本身。元素定位的參照物總是整個(gè)文檔(viewport)
  • sticky
    CSS3新屬性,表現(xiàn)類似position:relative和position:fixed的合體,在目標(biāo)區(qū)域在屏幕中可見時(shí),它的行為就像position:relative; 而當(dāng)頁(yè)面滾動(dòng)超出目標(biāo)區(qū)域時(shí),它的表現(xiàn)就像position:fixed,它會(huì)固定在目標(biāo)位置。(兼容性不好)

普通流與相對(duì)定位
CSS有三種基本的定位機(jī)制:普通流,相對(duì)定位和絕對(duì)定位
普通流是默認(rèn)定位方式,在普通流中元素框的位置由元素在html中的位置決定,元素position屬性為static或繼承來(lái)的static時(shí)就會(huì)按照普通流定位,這也是我們最常見的方式
相對(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ì)改變

普通流
<div style="border: solid 1px #0e0; width:200px;"> <div style="height: 100px; width: 100px; background-color: Red;"> </div> <div style="height: 100px; width: 100px; background-color: Green;"> </div> <div style="height: 100px; width: 100px; background-color: Red;"> </div> </div>

絕對(duì)定位與固定定位
相對(duì)定位可以看作特殊的普通流定位,元素位置是相對(duì)于它在普通流中位置發(fā)生變化,而絕對(duì)定位使元素的位置與文檔流無(wú)關(guān),也不占據(jù)文檔流空間,普通流中的元素布局就像絕對(duì)定位元素不存在一樣

絕對(duì)定位的元素的位置是相對(duì)于距離最近的非static祖先元素
位置決定的。如果元素沒(méi)有已定位的祖先元素,那么他的位置就相對(duì)于初始包含塊html來(lái)定位demo

因?yàn)榻^對(duì)定位與文檔流無(wú)關(guān),所以絕對(duì)定位的元素可以覆蓋頁(yè)面上的其他元素,可以通過(guò)z-index
屬性控制疊放順序,z-index越高,元素位置越靠上。

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

  • z-index 屬性設(shè)置元素的堆疊順序。
  • 擁有更高堆疊順序的元素總是會(huì)處于堆疊順序較低的元素的前面。
    注意:Z-index 僅能在定位元素上奏效(例如 position:absolute;)

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

  • position:relative和負(fù)margin都是不脫離文檔流,使得元素發(fā)生偏移,
  • position:relative排列后不會(huì)對(duì)周圍元素的排列發(fā)生影響,而負(fù)margin排列后會(huì)對(duì)文檔流中的頁(yè)面布局產(chǎn)生影響。前者無(wú)論如何定位,元素所占區(qū)域大小不變,而后者隨著margin的值的變化,元素所占頁(yè)面的區(qū)域也在變化。
  • position:relative可以調(diào)整定位元素的z-index層級(jí),而負(fù)margin不能;
  • position:relative主要配合絕對(duì)定位對(duì)頁(yè)面進(jìn)行版塊布局方面的定位,而負(fù)margin主要用于小的細(xì)節(jié)方面的位置調(diào)整。

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

  • BFC的全稱是 Block Format Content是Web頁(yè)面中盒模型布局的CSS渲染模式。它的定位體系屬于常規(guī)文檔流。

  • 當(dāng)涉及到可視化布局的時(shí)候,Block Formatting Context提供了一個(gè)環(huán)境,HTML元素在這個(gè)環(huán)境中按照一定規(guī)則進(jìn)行布局。一個(gè)環(huán)境中的元素不會(huì)影響到其它環(huán)境中的布局。

  • 例子:觸發(fā)main生成BFC后,這個(gè)新的BFC不會(huì)與浮動(dòng)的aside重疊。因此會(huì)根據(jù)包含塊的寬度,和aside的寬度,自動(dòng)變窄.

Paste_Image.png

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

  • 外邊距合并:外邊距合并指的是,當(dāng)兩個(gè)垂直外邊距相遇時(shí),它們將形成一個(gè)外邊距。合并后的外邊距的高度等于兩個(gè)發(fā)生合并的外邊距的高度中的較大者。

![Uploading P[K785TQ9DZ2%3Y1X@68L]I_454154.png . . .]

  • 外邊距合并產(chǎn)生條件:
    (1).相鄰的外邊距之間沒(méi)有非空內(nèi)容、padding或者border。
    (2).元素都處于文檔流中,即非浮動(dòng)和position屬性值不為absolute和fixed的元素。
    同時(shí)如果是元素是父子關(guān)系,子元素的padding和border并不能夠消除合并現(xiàn)象。合并可以存在于兄弟對(duì)象之間,也可以存在于父子對(duì)象之間,

  • 如何合并:具體查看w3c
    1.情況一:普通外邊距合并 (注意:兩個(gè) div 之間的外邊距是 20px,而不是 30px(20px + 10px)。)

    Paste_Image.png

2.當(dāng)一個(gè)元素包含在另一個(gè)元素中時(shí)(假設(shè)沒(méi)有內(nèi)邊距或邊框把外邊距分隔開),它們的上和/或下外邊距也會(huì)發(fā)生合并
注意:如果不設(shè)置 div 的內(nèi)邊距和邊框,那么內(nèi)部 div 的上外邊距將與外部 div 的上外邊距合并(疊加)。

Paste_Image.png

盡管看上去有些奇怪,但是外邊距甚至可以與自身發(fā)生合并。
假設(shè)有一個(gè)空元素,它有外邊距,但是沒(méi)有邊框或填充。在這種情況下,上外邊距與下外邊距就碰到了一起,它們會(huì)發(fā)生合并:

Paste_Image.png

如果這個(gè)外邊距遇到另一個(gè)元素的外邊距,它還會(huì)發(fā)生合并:

Paste_Image.png

這就是一系列的段落元素占用空間非常小的原因,因?yàn)樗鼈兊乃型膺吘喽己喜⒌揭黄穑纬闪艘粋€(gè)小的外邊距。
外邊距合并初看上去可能有點(diǎn)奇怪,但是實(shí)際上,它是有意義的。以由幾個(gè)段落組成的典型文本頁(yè)面為例。第一個(gè)段落上面的空間等于段落的上外邊距。如果沒(méi)有外邊距合并,后續(xù)所有段落之間的外邊距都將是相鄰上外邊距和下外邊距的和。這意味著段落之間的空間是頁(yè)面頂部的兩倍。如果發(fā)生外邊距合并,段落之間的上外邊距和下外邊距就合并在一起,這樣各處的距離就一致了。

  • 如何不讓相鄰元素外邊距合并?給個(gè)父子外邊距合并的范例
    • 父子元素之間的外邊據(jù)合并
      方式一:給父元素加邊框
Paste_Image.png

方式二:給父元素加padding

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

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