1. 浮動元素有什么特征鹊汛?對父容器、其他浮動元素并淋、普通元素、文字分別有什么影響?
- 浮動元素會脫離文檔流(不會對普通元素的布局產(chǎn)生影響)珍昨。
- 向左/向右浮動县耽,直到碰到父元素或者另一個浮動元素(如果父容器寬度不夠無法容納水平排列的浮動元素,那么其它浮動塊兒向下移動,直到有足夠的空間,如果浮動元素的高度不同,那么向下移動的時候可能被卡住)镣典。
- 普通流中的元素?zé)o法感知到浮動元素(會出現(xiàn)被浮動元素覆蓋的現(xiàn)象)兔毙,但是框的文本內(nèi)容會受到浮動元素的影響,會移動以留出空間給浮動元素(產(chǎn)生文字環(huán)繞效果)。
- 浮動會導(dǎo)致父元素高度坍塌兄春。
2. 清除浮動指什么? 如何清除浮動? 兩種以上方法
浮動會導(dǎo)致父元素高度坍塌(因為浮動元素脫離了文檔流澎剥,并不占據(jù)文檔流的位置,自然父元素也就不能被撐開赶舆,所以沒了高度)哑姚,為了解決高度坍塌問題祭饭,就要清除浮動:
- clear屬性:只要在最后添加一個div,設(shè)置
clear=both
樣式叙量。缺點是增加了一個無意義的標(biāo)簽倡蝙。 - 對父容器設(shè)置適合高度,缺點是需要手動計算高度绞佩。
- 使父容器形成BFC寺鸥,對父容器設(shè)置
float: left/right
overflow: hidden/auto/scroll
display: table-cell/table-caption/inline-block
position: absolute/fixed
但是使用float的時候會使父容器長度縮短,而且還有個重要缺陷——父容器float解決了其塌陷問題品山,那么父容器的父容器怎么辦胆建?overflow屬性會影響滾動條和絕對定位的元素;position會改變元素的定位方式
- 通用的方法
.clearfix{
*zoom:1;
}
.clearfix:after{
content:"";
display:block;
clear:left; /*方法1*/
}
.clearfix{
*zoom:1;
}
.clearfix:after{
content:"";
display:table;
clear:both; /*方法2*/
}
3. 有幾種定位方式谆奥,分別是如何實現(xiàn)定位的眼坏,參考點是什么,使用場景是什么酸些?
普通流
-
position: static
是默認(rèn)值宰译,從左到右,從上至下排列 -
position: relative
元素位置是相對于它在普通流中的位置發(fā)生變化(元素仍然保持其未定位前的形狀魄懂,它原本所占的空間仍保留,用于對元素的微調(diào)沿侈、配合絕對定位來使用)
絕對定位(應(yīng)用場景:彈窗,滾動圖按鈕等)
-
position: absolute
市栗,將該元素從文檔流中刪除缀拭,原來的占位不再存在,相對于距離最近的非static祖先元素位置定位填帽。如果元素沒有已定位的祖先元素蛛淋,那么他的位置就相對于初始包含塊html來定位demo,不論該元素為塊級元素還是內(nèi)聯(lián)級元素篡腌,定位后該元素將以塊級元素的形式顯示褐荷。 -
position: fixd
,效果類似absolute只是是相對于當(dāng)前視窗定位。
浮動定位(應(yīng)用場景:讓文字圍繞起來)
浮動的元素可以在左右移動嘹悼,直到它的外邊框邊緣碰到包含塊或另一個浮動元素的邊緣叛甫。浮動的元素離普通流。如果包含塊太窄杨伙,無法容納水平排列的浮動元素其监,那么其他浮動元素向下移動,直到有足夠多的空間限匣。如果浮動元素的高度不同抖苦,那么當(dāng)它們向下移動時可能會被其他浮動元素卡住。行內(nèi)元素會圍繞著浮動框排列
4. z-index 有什么作用? 如何使用?
z-index 屬性設(shè)置元素的堆疊順序。
擁有更高堆疊順序的元素總是會處于堆疊順序較低的元素的前面(元素可擁有負(fù)z-index 屬性值睛约;z-index 僅能在定位元素上奏效鼎俘;非同級關(guān)系和非父子關(guān)系定位元素之間的堆疊順序,要向上追溯到其為兄弟關(guān)系的父元素上辩涝,先比較其z-index值贸伐,只有父輩元素中的z-index值較大的后代子元素才能超過z-index值較小的父輩元素及其子孫元素。
5. position:relative
和負(fù)margin都可以使元素位置發(fā)生偏移?二者有什么區(qū)別
position:relative
發(fā)生偏移后元素仍然保持其未定位前的形狀怔揩,它原本所占的空間仍保留捉邢,并且不會影響其他元素;而負(fù)margin則會影響其他元素商膊。
6. BFC 是什么伏伐?如何生成 BFC?BFC 有什么作用晕拆?舉例說明
塊級格式化上下文藐翎。
浮動,絕對定位元素实幕,inline-blocks, table-cells, table-captions,和overflow的值不為visible的元素吝镣,(除了這個值已經(jīng)被傳到了視口的時候)將創(chuàng)建一個新的塊級格式化上下文。
元素滿足下列任何一個條件即可生成BFC
- float的值不為none
- position的值不為static或者relative
- display的值為 table-cell, table-caption, inline-block, flex, 或者 inline-flex
- overflow的值不為visible
通過創(chuàng)建一個新的BFC我們可以防止外邊距折疊昆庇;使用BFC來包含浮動元素(即清除浮動)末贾;使用BFC來防止文字圍繞浮動元素。
7. 在什么場景下會出現(xiàn)外邊距合并整吆?如何合并拱撵?如何不讓相鄰元素外邊距合并?給個父子外邊距合并的范例
當(dāng)兩個垂直外邊距相遇時表蝙,它們將形成一個外邊距拴测。