浮動(dòng)元素有什么特征谭确?對(duì)父容器宽档、其他浮動(dòng)元素、普通元素并级、文字分別有什么影響?
浮動(dòng)元素脫離正常的文檔流拂檩,被安放到它所在容器的的左端或者右端,并且文檔流中的普通元素察覺不到浮動(dòng)元素嘲碧。其他的文本和行內(nèi)元素可以覺察到稻励。
對(duì)父容器:如果父容器中的元素都是浮動(dòng)元素,父容器沒有設(shè)置 height 值的時(shí)候愈涩,會(huì)造成父容器高度塌陷望抽。
其他浮動(dòng)元素:同一父容器內(nèi)的浮動(dòng)元素按照設(shè)定的方向并排排列加矛,當(dāng)父元素的寬度不夠時(shí),后面的元素會(huì)向下移動(dòng)煤篙,直到有足夠的空間斟览;如果浮動(dòng)元素的高度不同,那么有可能擋住移動(dòng)的路徑舰蟆。
普通元素:無法辨別普通元素趣惠,有可能導(dǎo)致覆蓋其它普通元素。
文本:文本能夠識(shí)別浮動(dòng)元素身害,會(huì)圍繞浮動(dòng)元素味悄。
清除浮動(dòng)指什么? 如何清除浮動(dòng)? 兩種以上方法
清除浮動(dòng)是要清除浮動(dòng)元素造成的父容器塌陷等問題。如何清除浮動(dòng):
在要清除的浮動(dòng)元素下添加一個(gè)空div塌鸯。將空的div的style設(shè)成clear:both;
或者用CSS建一個(gè)空div侍瑟,這樣可以保證html的語義性。
.clearfix{ *zoom:1; //ie 6 和 7 用這個(gè)清除浮動(dòng)丙猬。}.clearfix:after{ content:""; display:block; // 或者 display: table; clear:left;}
用BFC的性質(zhì)清除浮動(dòng)涨颜。BFC其中一個(gè)性質(zhì)是BFC可以包含浮動(dòng)。我們就利用這個(gè)性質(zhì)來清除浮動(dòng)茧球。將包含浮動(dòng)元素的父元素形成新的BFC庭瑰,就可以達(dá)到清楚浮動(dòng)的效果。比如將父元素設(shè)為:overflow: hidden
或者display: inline-block
等形成新的BFC的方法抢埋。但是利用BFC清除浮動(dòng)有它的局限性弹灭。比如使用float的時(shí)候會(huì)使父容器長度縮短,overflow屬性會(huì)影響滾動(dòng)條和絕對(duì)定位的元素揪垄,position會(huì)改變?cè)氐亩ㄎ环绞角钏保砸Y(jié)合當(dāng)時(shí)的條件合理選擇清除浮動(dòng)的方法。
有幾種定位方式饥努,分別是如何實(shí)現(xiàn)定位的捡鱼,參考點(diǎn)是什么,使用場景是什么酷愧?
常見的定位方式有:
position: static;
或者不設(shè)置position值驾诈。這是定位的默認(rèn)值。元素出現(xiàn)在正常的文檔流中溶浴。(top翘鸭, bottom,left戳葵,right,z-index幾個(gè)屬性設(shè)置都不會(huì)發(fā)生作用汉匙。)
position: relative;
相對(duì)于元素本身在文檔流中的正常位置進(jìn)行定位拱烁。用于進(jìn)行自身的位置的局部調(diào)整或者用于子元素需要絕對(duì)定位的時(shí)候的參考點(diǎn)生蚁。
position: absolute;
生成絕對(duì)定位的元素,該元素脫離文檔流戏自。相對(duì)于static定位以外的第一個(gè)祖先元素(offset parent)的內(nèi)邊框進(jìn)行定位(top 和 left 的值為0時(shí)邦投,絕對(duì)定位在內(nèi)邊框。top 和 left 值不設(shè)或者為 auto擅笔,絕對(duì)定位元素在原本文檔流該在的位置)志衣。如果找不到非默認(rèn)定位的祖先。就以html的根節(jié)點(diǎn)(<html>
)當(dāng)作參考點(diǎn)進(jìn)行偏移猛们。http://js.jirengu.com/vapedijaxe/1/edit
position: fixed;
特殊的絕對(duì)定位念脯。相對(duì)于瀏覽器的窗口進(jìn)行定位。元素不會(huì)隨著頁面滾動(dòng)而發(fā)生滾動(dòng)弯淘,因?yàn)槭窍鄬?duì)于窗口進(jìn)行定位绿店,窗口是不會(huì)動(dòng)的。
position: sticky;
CSS3的新屬性庐橙。當(dāng)頁面滾動(dòng)時(shí)會(huì)隨著頁面發(fā)生滾動(dòng)假勿。但是當(dāng)觸到屏幕的頂部,元素會(huì)固定下來态鳖。當(dāng)滾動(dòng)下來转培,元素又會(huì)跟著下來。類似position: relative;
和position: fixed;
的合體浆竭。兼容性很差浸须,一般不用CSS來做這種效果。
z-index 有什么作用? 如何使用?
z-index 屬性指定一個(gè)元素的堆疊順序兆蕉,用于絕對(duì)定位的元素中羽戒。因?yàn)榻^對(duì)定位的元素脫離了文檔流,所以絕對(duì)定位的元素可以覆蓋頁面上的其它元素虎韵。這時(shí)可以通過給元素設(shè)置z-index屬性來控制疊放順序易稠,擁有更高堆疊順序的元素總是會(huì)處于堆疊順序較低的元素的前面。用 z-index: number; 進(jìn)行設(shè)定包蓝。number的值越大驶社,位于越靠上。
position:relative和負(fù)margin都可以使元素位置發(fā)生偏移?二者有什么區(qū)別
position:relative;
只相對(duì)自己原本位置發(fā)生偏移测萎,不影響其它文檔流中其他元素的位置亡电。margin:除了讓元素自身發(fā)生偏移還影響其它文檔流中的元素。http://js.jirengu.com/zemikeseci/1/edit?html,css,output
BFC 是什么硅瞧?如何生成 BFC份乒? BFC 有什么作用?舉例說明
BFC是 Block formatting contexts (塊格式化上下文) 的縮寫。
浮動(dòng)或辖,絕對(duì)定位瘾英,不是塊級(jí)元素的塊容器(比如 inline-blocks,table-cells 和 table-captions)颂暇,'overfolw'屬性不是'visible'的塊級(jí)元素會(huì)形成一個(gè)新的BFC缺谴。
BFC會(huì)阻止垂直外邊距(margin-top、margin-bottom)折疊耳鸯,所以可以用來解決外邊距合并的問題湿蛔。對(duì)于嵌套元素的外邊距合并,只要把父元素設(shè)為BFC就可以了县爬。這樣子元素的margin就不會(huì)和父元素的margin發(fā)生重疊阳啥。
BFC包含浮動(dòng)。我們利用這個(gè)性質(zhì)來清除浮動(dòng)捌省。將包含浮動(dòng)元素的父元素形成新的BFC苫纤,就可以達(dá)到清楚浮動(dòng)的效果。比如將父元素設(shè)為:overflow: hidden
或者display: inline-block
等形成新的BFC的方法纲缓。
在什么場景下會(huì)出現(xiàn)外邊距合并卷拘?如何合并?如何不讓相鄰元素外邊距合并祝高?給個(gè)父子外邊距合并的范例
當(dāng)兩個(gè)相鄰元素處于同一個(gè)BFC中會(huì)發(fā)生垂直外邊距合并栗弟。
兩個(gè)相鄰的外邊距都是正數(shù)時(shí),折疊結(jié)果是它們兩個(gè)之間較大的值工闺。
兩個(gè)相鄰的外邊距都是負(fù)數(shù)時(shí)乍赫,折疊結(jié)果是兩個(gè)絕對(duì)值的較大值。
兩個(gè)外邊距是一正一負(fù)時(shí)陆蟆,折 疊結(jié)果是兩者的相加的和雷厂。
避免外邊距合并的方法有:
父元素加上 padding 或 border
將父元素變成一個(gè)新的BFC。例如:給父元素設(shè)置overflow: hidden;
或float: left;
等