CSS浮動(dòng)和定位

1.浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響?

浮動(dòng)元素不在文檔的普通流中,它可以根據(jù)float屬性值而左右移動(dòng),直到它的外邊緣碰到包含框或者另一個(gè)浮動(dòng)元素的框的邊緣才停止移動(dòng)。

  • 對(duì)父容器的影響:如果父容器的子元素都是浮動(dòng)元素,那么父容器會(huì)失去高度,在浮動(dòng)元素之外。視覺(jué)上,父容器沒(méi)有包含住浮動(dòng)的子元素。
  • 其它浮動(dòng)元素的影響:如果包含塊太窄無(wú)法容納水平排列的全部浮動(dòng)元素,那么其它浮動(dòng)元素會(huì)向下移動(dòng),直到有足夠的空間,而如果浮動(dòng)元素的高度不同,那么向下移動(dòng)的時(shí)候可能會(huì)被卡住。
  • 普通元素的影響:普通元素會(huì)視浮動(dòng)元素不見(jiàn),占據(jù)浮動(dòng)元素原有的位置,但會(huì)被浮動(dòng)元素遮罩。
  • 對(duì)文字的影響:文字會(huì)感知到浮動(dòng)元素的存在,會(huì)留出空間,形成環(huán)繞效果。

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

清除浮動(dòng)是指浮動(dòng)元素脫離文檔流,父元素?zé)o法感知浮動(dòng)元素的容量,如果父元素未設(shè)置高度值,父元素高度將無(wú)法只由浮動(dòng)元素?fù)伍_(kāi),結(jié)合clear屬性讓父元素在視覺(jué)上包圍浮動(dòng)元素。清除浮動(dòng)的方法:

  • 在父元素的子元素最后添加一個(gè)空div,并對(duì)其設(shè)置樣式:clear:both;
    由于在子元素最后添加了空div,并清除了浮動(dòng),因此父容器被撐開(kāi),實(shí)現(xiàn)了在視覺(jué)上包圍浮動(dòng)元素的效果。
  • 利用BFC來(lái)清除浮動(dòng)。
    因?yàn)锽FC可以包含浮動(dòng),因此可以讓父元素生成一個(gè)新的BFC從而包圍浮動(dòng)的子元素。
    可以對(duì)父元素設(shè)定以下樣式之一生成新BFC。
    float: left | right;
    overflow: hidden | auto | scroll;
    display: table-cell | table-caption | inline-block;
    position: absolute | fixed;
  • 對(duì)父元素結(jié)合CSS特性的通用清除浮動(dòng)方案,其本質(zhì)還是第1種方法。
after偽類(lèi): 元素內(nèi)部末尾添加內(nèi)容;
.clearfix{
  *zoom: 1;//用來(lái)觸發(fā) IE下 haslayout,使元素根據(jù)自身內(nèi)容計(jì)算寬高
}
.clearfix:after{
   content: “”; 
   display: block; 
   clear: both;
}

這個(gè)方法沒(méi)有副作用,但是并不是每一個(gè)清除浮動(dòng)都用這種方式,視情況而定

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

有6種定位方式:

  • inherit:從父元素繼承;
  • static:默認(rèn)值,沒(méi)有定位,元素出現(xiàn)在正常的文檔流中。參考點(diǎn)是文檔流中的位置。
  • relative:相對(duì)定位。相對(duì)于元素本身正常位置進(jìn)行定位,通過(guò)top、bottom、left、right屬性來(lái)設(shè)置偏移量。使用場(chǎng)景:為絕對(duì)定位設(shè)定參照物或?qū)υ刈陨砦恢眠M(jìn)行局部調(diào)整。
  • absolute:絕對(duì)定位。相對(duì)于static定位意外的第一個(gè)祖先元素進(jìn)行定位,若都沒(méi)有發(fā)現(xiàn)則以html標(biāo)簽為參考進(jìn)行定位。使用場(chǎng)景:當(dāng)想讓元素參照特定參照物進(jìn)行定位時(shí)使用。
  • fixed:固定定位。生成絕對(duì)定位元素,相對(duì)于viewport進(jìn)行定位。
  • sticky:對(duì)象在常態(tài)時(shí)遵循普通流。它就像是relative和fixed的合體,當(dāng)在屏幕中時(shí)按常規(guī)流排版,當(dāng)卷動(dòng)到屏幕外時(shí)則表現(xiàn)如fixed。兼容性差,不使用。

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

因?yàn)榻^對(duì)定位的元素脫離了普通流,所以絕對(duì)定位的元素可以覆蓋頁(yè)面上的其它元素。這時(shí)可以通過(guò)給元素設(shè)置z-index屬性來(lái)控制疊放順序,該屬性值越高,元素位置越靠上。

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

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

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

BFC(Block formatting context)直譯為"塊級(jí)格式化上下文"。它是一個(gè)獨(dú)立的渲染區(qū)域,只有Block-level box參與, 它規(guī)定了內(nèi)部的Block-level Box如何布局,并且與這個(gè)區(qū)域外部毫不相干。
BFC就是頁(yè)面上一個(gè)隔離出來(lái)了的獨(dú)立容器,容器里面的子元素不會(huì)影響到外面的元素。
哪些元素會(huì)生成BFC?

  • 根元素
  • float: left|right
  • overflow: hidden|auto|scroll
  • display: table-cell|table-caption|inline-block
  • position: absolute|fixed
    BFC具有特性:
    1、阻止垂直外邊距折疊:因?yàn)榭梢宰屒短椎脑胤謩e在不同的BFC就可以阻止它們外邊就折疊了。
    2、BFC不會(huì)重疊浮動(dòng)元素
    3、BFC可以包含浮動(dòng),可以利用這一條特性來(lái)清除浮動(dòng),設(shè)置父元素為BFC,就可以清除浮動(dòng),但是這樣做都會(huì)有一些負(fù)作用,要根據(jù)實(shí)際情況選擇不同的方式。

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

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

  • 兩個(gè)兄弟元素在垂直方向上合并外邊距,取較大值進(jìn)行合并。
  • 父子元素間沒(méi)有阻擋(如:邊框、非空內(nèi)容、padding等)時(shí)發(fā)生上和/或下外邊距合并。

當(dāng)為parent容器加上邊框后,則能正常顯示外邊距



阻止父子元素外邊距合并的辦法:形成BFC可以阻止外邊柜合并或者元素上加上border或者padding

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,796評(píng)論 1 92
  • 浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響?浮動(dòng)的元素會(huì)脫離文檔流,向左或者向右移動(dòng)...
    饑人谷_wanpp閱讀 689評(píng)論 0 49
  • 浮動(dòng)元素的特征及影響 特征: 浮動(dòng)模型也是一種可視化格式模型,浮動(dòng)的框可以左右移動(dòng)(根據(jù)float屬性值而定),直...
    Joey的企鵝閱讀 909評(píng)論 0 0
  • 1. 浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響? 浮動(dòng)元素會(huì)脫離文檔流(不會(huì)對(duì)普通...
    727上上上閱讀 423評(píng)論 0 0
  • 一,浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響? 浮動(dòng)模型是一種可視化格式模型,浮動(dòng)...
    DeeJay_Y閱讀 901評(píng)論 0 4