1、文檔流的概念指什么?有哪種方式可以讓元素脫離文檔流?
文檔流是文檔中可顯示對(duì)象在排列時(shí)所占用的位置,元素的位置由元素在 (X)HTML 中的位置決定
通過(guò)定位與浮動(dòng)的方法可以讓元素脫離文檔流。
2、有幾種定位方式,分別是如何實(shí)現(xiàn)定位的,使用場(chǎng)景如何?
1、static:默認(rèn)值。沒(méi)有定位,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)。
2、relative:生成相對(duì)定位的元素,通過(guò)top,bottom,left,right的設(shè)置相對(duì)于其正常位置進(jìn)行定位??赏ㄟ^(guò)z-index進(jìn)行層次分級(jí)。
3、absolute:生成絕對(duì)定位的元素,相對(duì)于 static 定位以外的第一個(gè)父元素進(jìn)行定位。元素的位置通過(guò) "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定。可通過(guò)z-index進(jìn)行層次分級(jí)。
4、fixed:生成絕對(duì)定位的元素,相對(duì)于瀏覽器窗口進(jìn)行定位。元素的位置通過(guò) "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定??赏ㄟ^(guò)z-index進(jìn)行層次分級(jí)。
3、absolute, relative, fixed 偏移的參考點(diǎn)分別是什么
absolute 參考點(diǎn)是相對(duì)于 static 定位以外的第一個(gè)已經(jīng)定位的父級(jí)元素(相對(duì)/絕對(duì))來(lái)決定的。
relative 參考點(diǎn)是相對(duì)于其正常位置進(jìn)行定位。
fixed 參考點(diǎn)是相對(duì)于瀏覽器窗口進(jìn)行定位。
4、z-index 有什么作用? 如何使用?
z-index:針對(duì)網(wǎng)頁(yè)顯示中的一個(gè)特殊屬性,為了表示三維立體的概念如元素的上下層的疊加順序引入了 z-index 屬性來(lái)表示 Z 軸。但其只對(duì)定位元素有效。下面是不同場(chǎng)景下的顯示順序:① z-index 值:值較大的元素將疊加在 z-index 值較小的元素之上,正數(shù)值將疊加在負(fù)數(shù)值得對(duì)象上。②相同 z-index 的疊加順序:
如果兩個(gè)元素都沒(méi)有定位發(fā)生位置重合現(xiàn)象或者兩個(gè)都已定位元素且z-index 相同發(fā)生位置重合現(xiàn)象,那么按文檔流順序,后面的覆蓋前面的。
如果兩個(gè)元素都沒(méi)有設(shè)置z-index,使用默認(rèn)值,一個(gè)定位一個(gè)沒(méi)有定位,那么定位元素覆蓋未定位元素。
③父子關(guān)系處理:
如果父元素z-index有效,那么子元素?zé)o論是否設(shè)置z-index都和父元素一致,會(huì)在父元素上方,即使是子元素的 z-index 值比父元素小,也會(huì)出現(xiàn)在父元素上方。
如果父元素z-index 失效(未定位或者使用默認(rèn)值),那么定位子元素的 z-index 設(shè)置生效。
④兄弟之間子元素疊加順序:由其父元素決定,父元素值高的疊加低的,不管子元素 z-index 值得大小。


5、position:relative 和負(fù) margin 都可以使元素位置發(fā)生偏移?二者有什么區(qū)別
position:relative使元素發(fā)生偏移,雖然能夠覆蓋其他元素,但是只是位置發(fā)生了偏移,對(duì)于文檔流沒(méi)有影響,其他元素還會(huì)以為它還在那個(gè)位置。
負(fù)margin使元素位置發(fā)生偏移,也能夠覆蓋其他元素,但是其后的元素也會(huì)跟著它移動(dòng),會(huì)影響文檔流。


6、如何讓一個(gè)固定寬高的元素在頁(yè)面上垂直水平居中?
把父元素設(shè)置成相對(duì)定位relative,子元素設(shè)置成絕對(duì)定位absolute,上偏移50%,左偏移50%,由于是點(diǎn)到點(diǎn)的偏移,所以元素會(huì)錯(cuò)過(guò)居中的位置,需要用上邊距和左邊距的負(fù)邊距來(lái)回到劇中的位置,負(fù)邊距的數(shù)值為被偏移元素寬高的一半。

7、浮動(dòng)元素有什么特征?對(duì)其他浮動(dòng)元素、普通元素、文字分別有什么影響?
浮動(dòng)元素會(huì)脫離文檔流,會(huì)在其他浮動(dòng)后面繼續(xù)浮動(dòng),由于有渲染的先后,所以有時(shí)浮動(dòng)的順序有所變化。
對(duì)于普通元素,浮動(dòng)元素不會(huì)占據(jù)文檔流的位置,所以普通元素會(huì)認(rèn)為它不存在而繼續(xù)文檔流,但是塊元素會(huì)在浮動(dòng)元素的下面,行內(nèi)元素和塊元素中的行內(nèi)內(nèi)容會(huì)考慮浮動(dòng)元素的邊界,因此會(huì)圍繞著浮動(dòng)元素。
對(duì)于文字,文本內(nèi)容會(huì)受到浮動(dòng)元素的影響,會(huì)移動(dòng)以留出空間,也就是常見(jiàn)的文字環(huán)繞。
8、清除浮動(dòng)指什么? 如何清除浮動(dòng)?
浮動(dòng)元素引起的問(wèn)題:
父元素的高度無(wú)法被撐開(kāi),影響與父元素同級(jí)的元素
與浮動(dòng)元素同級(jí)的非浮動(dòng)元素會(huì)跟隨其后
若非第一個(gè)元素浮動(dòng),則該元素之前的元素也需要浮動(dòng),否則會(huì)影響頁(yè)面顯示的結(jié)構(gòu)
清楚浮動(dòng)實(shí)際上為前面的浮動(dòng)元素留出了垂直空間,也可以解決上面問(wèn)題中的第二個(gè)問(wèn)題與第三個(gè)問(wèn)題。
語(yǔ)法:clear : none | left | right | both
none:默認(rèn)值。允許兩邊都可以有浮動(dòng)對(duì)象
left:不允許左邊有浮動(dòng)對(duì)象
right:不允許右邊有浮動(dòng)對(duì)象
both:不允許有浮動(dòng)對(duì)象