static:靜態定位是position的預設值,元素框正常產生,也就是沒有定位時的正常顯示。
relative:相對定位
用法一:元素相對自身的原位置位移某個距離,但是原本的空間依舊保留,表現為空白。
用法二:把一個元素設定為position: relative; 可以使該元素的子項目相對該元素絕對位置。
absolute:絕對位置
元素從文檔流刪除,並相對於包含塊定位。元素在原本的空間關閉。元素定位後產生一個塊級框,不論它原來是行內元素還是區塊層級元素。
包含塊:最近的position值不是static的祖先元素(塊級或行內),一般會指定一個元素作為絕對位置元素的包含塊,將其position設定為relative而且沒有位移。
fixed:固定定位
元素從文檔流刪除,並相對於瀏覽器視窗定位,因此不隨文檔滾動而移動。元素在原本的空間關閉。元素定位後產生一個塊級框,不論它原來是行內元素還是區塊層級元素。與絕對位置的區別僅僅是包含塊不同。
包含塊:瀏覽器視窗。
absolute/fixed和float對比
類似:元素都會從文檔流刪除,但是依舊會影響布局;都會產生一個塊級框,無論原來是不是區塊層級元素。
區別:float的包含塊是最近的塊級祖先元素。
位移屬性:top/right/bottom/left,初始值是auto。
採用position定位之後必須採用位移屬性定義位移量,也就是相對包含塊的位移。注意應用於position值不是static的元素。
有時也需要定義width和heigth,但是可能會和位移屬性的定義衝突,因為四個位移屬性實際上已經定義了元素的大小。此時,根據width和left屬性定義左右,根據top和height屬性定義上下。
內容溢出overflow: visible/ hidden/ scroll /auto/ inherit,初始值是visible。
一個元素的大小固定,但是其內容放不下,就會導致溢出。overflow控制溢出部分的可見(visible)、不可見(hidden)、滾動可見(scroll)。
元素可見度visibility: visible/ hidden/ collapse/ inherit,初始值是visible。
visibility:hidden和display:none的區別:visibility:hidden設定元素不可見,但是元素依舊會影響布局,只是元素部分呈現為空白;display:none元素不顯示並且從文檔流中刪除,對文檔布局沒有任何影響。