CSS 布局 - position 屬性

position 屬性規定應用于元素的定位方法的類型(static、relative、fixed、absolute 或 sticky)。

position 屬性

position 屬性規定應用于元素的定位方法的類型。

有五個不同的位置值:

  • static
  • relative
  • fixed
  • absolute
  • sticky

元素其實是使用 top、bottom、left 和 right 屬性定位的。但是,除非首先設置了 position 屬性,否則這些屬性將不起作用。根據不同的 position 值,它們的工作方式也不同。

position: static;

HTML 元素默認情況下的定位方式為 static(靜態)。

靜態定位的元素不受 top、bottom、left 和 right 屬性的影響。

position: static; 的元素不會以任何特殊方式定位;它始終根據頁面的正常流進行定位:

這個 <div> 元素設置了 position: static;

這是所用的 CSS:

實例

div.static {
  position: static;
  border: 3px solid #73AD21;
}

親自試一試

position: relative;

position: relative; 的元素相對于其正常位置進行定位。

設置相對定位的元素的 top、right、bottom 和 left 屬性將導致其偏離其正常位置進行調整。不會對其余內容進行調整來適應元素留下的任何空間。

這個 <div> 元素設置了 position: relative;

這是所用的 CSS:

實例

div.relative {
  position: relative;
  left: 30px;
  border: 3px solid #73AD21;
}

親自試一試

position: fixed;

position: fixed; 的元素是相對于視口定位的,這意味著即使滾動頁面,它也始終位于同一位置。 top、right、bottom 和 left 屬性用于定位此元素。

固定定位的元素不會在頁面中通常應放置的位置上留出空隙。

請注意頁面右下角的這個固定元素。這是所用的 CSS:

實例

div.fixed {
  position: fixed;
  bottom: 0;
  right: 0;
  width: 300px;
  border: 3px solid #73AD21;
}

親自試一試

這個 <div> 元素設置了 position: fixed;

position: absolute;

position: absolute; 的元素相對于最近的定位祖先元素進行定位(而不是相對于視口定位,如 fixed)。

然而,如果絕對定位的元素沒有祖先,它將使用文檔主體(body),并隨頁面滾動一起移動。

注意:“被定位的”元素是其位置除 static 以外的任何元素。

這是一個簡單的例子:

這個 <div> 元素設置了 position: relative;
這個 <div> 元素設置了 position: absolute;

這是所用的 CSS:

實例

div.relative {
  position: relative;
  width: 400px;
  height: 200px;
  border: 3px solid #73AD21;
} 
div.absolute {
  position: absolute;
  top: 80px;
  right: 0;
  width: 200px;
  height: 100px;
  border: 3px solid #73AD21;
}

親自試一試

position: sticky;

position: sticky; 的元素根據用戶的滾動位置進行定位。

粘性元素根據滾動位置在相對(relative)和固定(fixed)之間切換。起先它會被相對定位,直到在視口中遇到給定的偏移位置為止 - 然后將其“粘貼”在適當的位置(比如 position:fixed)。

注意:Internet Explorer、Edge 15 以及更早的版本不支持粘性定位。 Safari 需要 -webkit- 前綴(請參見下面的實例)。您還必須至少指定 toprightbottomleft 之一,以便粘性定位起作用。

在此例中,在到達其滾動位置時,sticky 元素將停留在頁面頂部(top: 0)。

實例

div.sticky {
  position: -webkit-sticky; /* Safari */
  position: sticky;
  top: 0;
  background-color: green;
  border: 2px solid #4CAF50;
}

親自試一試

重疊元素

在對元素進行定位時,它們可以與其他元素重疊。

z-index 屬性指定元素的堆棧順序(哪個元素應放置在其他元素的前面或后面)。

元素可以設置正或負的堆疊順序:

這是一個標題

由于圖像的 z-index 為 -1,所以它位于文本后面。

實例

img {
  position: absolute;
  left: 0px;
  top: 0px;
  z-index: -1;
}

親自試一試

具有較高堆疊順序的元素始終位于具有較低堆疊順序的元素之前。

注意:如果兩個定位的元素重疊而未指定 z-index,則位于 HTML 代碼中最后的元素將顯示在頂部。

定位圖像中的文本

如何在圖片上放置文字:

實例

CodeW3C.com Logo
Bottom Left
Top Left
Top Right
Bottom Right
Centered

親自試一試:

Top Left Top Right Bottom Left Bottom Right Centered

更多實例

設置元素的形狀
本例演示如何設置元素的形狀。元素被裁剪為這種形狀并顯示。

所有 CSS 定位屬性

屬性 描述
bottom 設置定位框的底部外邊距邊緣。
clip 剪裁絕對定位的元素。
left 設置定位框的左側外邊距邊緣。
position 規定元素的定位類型。
right 設置定位框的右側外邊距邊緣。
top 設置定位框的頂部外邊距邊緣。
z-index 設置元素的堆疊順序。

延伸閱讀

課外書:CSS 定位概述

課外書:CSS 相對定位

課外書:CSS 絕對定位