1、文檔流的概念指什么?有哪種方式可以讓元素脫離文檔流?
文檔流(normal flow)是文檔中可顯示對象在排列時所占用的位置,我理解的是瀏覽器默認的輸出DOM的方式按自上而下,從左往右的順序排列(不一定對哈~)。常見的就是塊級元素和內鏈元素,塊級元素只要出現就會霸道的占據一整行,而內鏈元素往往是只要右邊還有余位,便會安心的占據。
脫離文檔流一般有3種方式:float,positon:absolute,position:fixed。
有一點值得注意的是,文本在遇到float時會環繞著float;而遇到positon:absolute時,將無視它與之重疊排列。
2、有幾種定位方式,分別是如何實現定位的,使用場景如何?
-
position:static
:默認值,即正常的文檔流形式;
-
position:absolute
:絕對定位,相對于有定位方法(除了static定位)的第一個祖先元素進行定位,若無定位的祖先元素則是相對于<html>
進行定位,該定位方法脫離文檔流;
-
position:relative
相對定位,相對于自己本身的定位方法,并未脫離文檔流;
-
position:fixed
我把它叫做牛皮鮮定位,相對于瀏覽器進行定位,它永遠固定出現在瀏覽器中的某個位置。
至于最終選取什么樣的定位方式,那就得具體情況具體分析了。
3、absolute, relative, fixed偏移的參考點分別是什么?
其實第2題已經做出了解答:
- absolute參考的是離自己最近的、擁有定位(除了static)方式的祖先元素。若沒有的話就是
<html>
; - relative參考的是自身原本的位置;
- fixed參考的是
<html>
。
4、z-index 有什么作用? 如何使用?
關于z-index其實很好理解,作為機械專業的學生,必須秀一波我卓越的畫圖技術了(尼瑪快忘完了,湊合著看吧):
我們假設有3個文檔層,設置綠色層z-index:1;黃色層z-index:2;紅色層為默認的0,然后定位時移動至下圖模樣
實際上被分成了三層:
看的更直觀一點應該是這樣:
顯然,在網頁布局中,我們能夠看到的是黃色圖層所呈現的所有元素,以及少量未被遮擋部分的紅色元素以及綠色元素(大家其實都在,只是有些被遮擋了),通過這種方式我們可以用z-index畫出很多圖形,或是實現更加靈活的排版布局。記住一點,z-index數字越大,元素越靠上層。
5、position:relative和負margin都可以使元素位置發生偏移,二者有什么區別?
margin會改變其他元素的位置,而position:relative不會。
6、如何讓一個固定寬高的元素在頁面上垂直水平居中?
老辦法:
CSS3新辦法:
7、浮動元素有什么特征?對其他浮動元素、普通元素、文字分別有什么影響?
浮動元素脫離了文檔流,浮動模型是一種可視化格式模型,浮動的框可以左右移動(根據float屬性值而定),直到它的外邊緣碰到包含框或者另一個浮動元素的框的邊緣。
- 對其他浮動元素的影響
-
對普通元素的影響
直接凌駕于其它元素之上,其實也是其它元素不鳥它
- 對文字的影響
文字環繞在其周圍
8、清除浮動指什么? 如何清除浮動?
清除浮動用于本元素希望消去前面元素因為浮動所帶來的布局影響。
如上圖所示,3未浮動,1,2先后分別float:right
,此時對3分別使用clear:both
,clear:left
,clear:right
,結果如下:
顯然,
float:left
不對清除浮動有效果。
現在讓3向左浮動,并添加box4,由于1,2,3都脫離了文檔流,自然4占據了左上角:
現在分別對4進行:clear:both
,clear:left
,clear:right
,結果如下:
我們由上面的測試結果可知:clear的left和right只對上一個浮動元素的方向有效,即浮動元素在左,用left值,反之用right,用both自然是最保險。