grid-area

Baseline 已廣泛支援

此功能已非常成熟,可在多種裝置和瀏覽器版本上使用。自 2017 年 10 月以來,它已在各大瀏覽器中可用。

grid-area CSS 簡寫屬性,透過為其網格位置貢獻一條線、一個跨度或不貢獻任何內容(自動),來指定網格項在網格中的大小和位置,從而指定其網格區域的邊緣。

試一試

grid-area: a;
grid-area: b;
grid-area: c;
grid-area: 2 / 1 / 2 / 4;
<section class="default-example" id="default-example">
  <div class="example-container">
    <div class="transition-all" id="example-element">Example</div>
  </div>
</section>
.example-container {
  border: 1px solid #c5c5c5;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: repeat(3, minmax(40px, auto));
  grid-template-areas:
    "a a a"
    "b c c"
    "b c c";
  grid-gap: 10px;
  width: 200px;
}

.example-container > div {
  background-color: rgb(0 0 255 / 0.2);
  border: 3px solid blue;
}

#example-element {
  background-color: rgb(255 0 200 / 0.2);
  border: 3px solid rebeccapurple;
}

如果指定了四個 <grid-line> 值,grid-row-start 將設定為第一個值,grid-column-start 將設定為第二個值,grid-row-end 將設定為第三個值,grid-column-end 將設定為第四個值。

當省略 grid-column-end 時,如果 grid-column-start 是一個 <custom-ident>,則 grid-column-end 將設定為該 <custom-ident>;否則,它將設定為 auto

當省略 grid-row-end 時,如果 grid-row-start 是一個 <custom-ident>,則 grid-row-end 將設定為該 <custom-ident>;否則,它將設定為 auto

當省略 grid-column-start 時,如果 grid-row-start 是一個 <custom-ident>,則所有四個長屬性都將設定為該值。否則,它將設定為 auto

grid-area 屬性也可以設定為一個 <custom-ident>,作為區域的名稱,然後可以使用 grid-template-areas 進行放置。

構成屬性

此屬性是以下 CSS 屬性的簡寫:

語法

css
/* Keyword values */
grid-area: auto;
grid-area: auto / auto;
grid-area: auto / auto / auto;
grid-area: auto / auto / auto / auto;

/* <custom-ident> values */
grid-area: some-grid-area;
grid-area: some-grid-area / another-grid-area;

/* <integer> && <custom-ident>? values */
grid-area: 4 some-grid-area;
grid-area: 4 some-grid-area / 2 another-grid-area;

/* span && [ <integer> || <custom-ident> ] values */
grid-area: span 3;
grid-area: span 3 / span some-grid-area;
grid-area: 2 span / another-grid-area span;

/* Global values */
grid-area: inherit;
grid-area: initial;
grid-area: revert;
grid-area: revert-layer;
grid-area: unset;

auto

一個關鍵字,表示該屬性對網格項的放置沒有任何貢獻,表示自動放置或預設跨度為 1

<custom-ident>

如果存在名稱為 <custom-ident>-start<custom-ident>-end 的命名線,它將貢獻第一條這樣的線到網格項的放置中。

注意:命名的網格區域會自動生成這種形式的隱式命名線,因此指定 grid-area: foo; 將選擇該命名網格區域的起始/結束邊緣(除非之前明確指定了另一條名為 foo-start/foo-end 的線)。

否則,這將被視為指定了整數 1<custom-ident>

<integer> && <custom-ident>?

貢獻第 n 條網格線到網格項的放置中。如果給出負整數,則反向計數,從顯式網格的結束邊緣開始。

如果給定一個名稱作為 <custom-ident>,則只計算具有該名稱的線。如果具有該名稱的線不足,則為了查詢此位置,所有隱式網格線都假定具有該名稱。

<integer>0 是無效的。

span && [ <integer> || <custom-ident> ]

貢獻一個網格跨度到網格項的放置中,使得網格項的網格區域的相應邊緣距離對側邊緣有 n 條線。

如果給定一個名稱作為 <custom-ident>,則只計算具有該名稱的線。如果具有該名稱的線不足,則為了計算此跨度,顯式網格側面與搜尋方向對應的所有隱式網格線都假定具有該名稱。

如果省略 <integer>,則預設為 1。負整數或 0 無效。

正式定義

初始值作為簡寫中的每個屬性
應用於網格專案和包含塊是網格容器的絕對定位框
繼承性
計算值作為簡寫中的每個屬性
動畫型別離散

正式語法

grid-area = 
<grid-line> [ / <grid-line> ]{0,3}

<grid-line> =
auto |
<custom-ident> |
[ [ <integer [-∞,-1]> | <integer [1,∞]> ] && <custom-ident>? ] |
[ span && [ <integer [1,∞]> || <custom-ident> ] ]

示例

設定網格區域

HTML

html
<div id="grid">
  <div id="item1"></div>
  <div id="item2"></div>
  <div id="item3"></div>
</div>

CSS

css
#grid {
  display: grid;
  height: 100px;
  grid-template: repeat(4, 1fr) / 50px 100px;
}

#item1 {
  background-color: lime;
  grid-area: 2 / 2 / auto / span 3;
}

#item2 {
  background-color: yellow;
}

#item3 {
  background-color: blue;
}

結果

規範

規範
CSS 網格佈局模組 Level 2
# propdef-grid-area

瀏覽器相容性

另見