CSS3之內容佈局——定位(position)

聲明:本文源自《精通CSS:高級web標準解決方案》(第3版)

一、定位:static relative absolute  fixed

1. 概念:

      static(靜態定位):塊級元素垂直堆疊

      relative (相對定位):真正的用途:可以爲 “後代元素” 創造 “定位上下文” ;相對其 “原始位置” 控制該元素的 “偏移量”,同時不影響周圍其他的元素。

      absolute(絕對定位):相對其最近的 “定位上下文” || “非static定位的‘祖先元素’” || “html元素”,進行定位 。會脫離文檔流

      fixed(固定定位):其“定位上下文”被自動設置爲瀏覽器視口, 脫離文檔流。

2. 應用場景:

    “絕對定位”-->非常適合  “創建彈出層”,“提示”,“對話框”,這類覆蓋於其他內容之上的組件。

    示例:關於 提示框的 實現:

    

基於僞類after 利用border的特性實現三角形

場景:利用偏移實現自動大小

relative + absolute 實現, 前者生成 “定位上下文”, 後者加上 top bottom left right 這些偏移量的控制,設置其中3個 自動控制剩餘的1個。

比如:如下的設置,指定右、下、左邊距,上空間通過自動計算

.photo-header {
      position: relative;
 }

.photo-header-plate {
      position: absolute;
      right: 4em;
      bottom: 4em;
      left: 4em;
 }

<header class="photo-header">
    <div class="photo-header-plate"></div>
</header>

3. 定位與z-index: 堆疊內容的陷阱

靜態定位(static)以外的元素會根據他們在代碼樹中的深度依次疊放,這個次序可以通過z-index來調整。z-index只要設爲正值,就會出現在未設置z-index元素的上方。

“堆疊上下文”,是由特定屬性和值創建的。有一個“根堆疊上下文”,所有的z-index不是auto的定位元素都會出現在這個上下文中排序。隨着其他上下文的建立,就會出現堆疊層級。

舉例:

1. 任何設定了position: absolute及值不是auto的z-index屬性的元素,都會創建一個自己後代元素的堆疊上下文

2. 在一個堆疊上下文的內部,無論z-index的值多大或多小,都不會影響“其他堆疊上下文”。

3. opacity的值小於1的元素可以觸發新的堆疊上下文,因爲該元素需要 “獨立” 渲染(包括它的所有後代元素)

4. transform和filter屬性,也會觸發創建新的“堆疊上下文”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章