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 元素不顯示並且從檔案流中刪除,對檔案佈局沒有任何影響。