grid-auto-flow

Baseline 已廣泛支援

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

grid-auto-flow CSS 屬性控制自動佈局演算法的工作方式,它精確指定了自動放置的專案如何流入網格。

試一試

grid-auto-flow: row;
grid-auto-flow: column;
grid-auto-flow: row dense;
<section class="default-example" id="default-example">
  <div class="example-container">
    <div class="transition-all" id="example-element">
      <div>One</div>
      <div>Two</div>
      <div>Three</div>
      <div>Four</div>
      <div>Five</div>
    </div>
  </div>
</section>
#example-element {
  border: 1px solid #c5c5c5;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: repeat(3, minmax(40px, auto));
  grid-gap: 10px;
  width: 220px;
}

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

#example-element > div:nth-child(1) {
  grid-column: auto / span 2;
}

#example-element > div:nth-child(2) {
  grid-column: auto / span 2;
}

注意: masonry-auto-flow 屬性已從 CSS 瀑布流佈局中移除,取而代之的是 grid-auto-flow。詳情請參閱 csswg-drafts #10231

語法

css
/* Keyword values */
grid-auto-flow: row;
grid-auto-flow: column;
grid-auto-flow: dense;
grid-auto-flow: row dense;
grid-auto-flow: column dense;

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

此屬性可以採取以下兩種形式之一:

  • 單個關鍵詞:rowcolumndense 之一。
  • 兩個關鍵詞:row densecolumn dense

row

專案透過依次填充每行進行放置,必要時新增新行。如果未提供 row 也未提供 column,則假定為 row

column

專案透過依次填充每列進行放置,必要時新增新列。

dense

"密集"打包演算法試圖在網格中更早地填充空洞,如果後面有更小的專案出現。當這樣做能夠填補較大專案留下的空洞時,這可能會導致專案出現亂序。

如果省略,則使用“稀疏”演算法,其中佈局演算法在放置專案時只在網格中“向前”移動,從不回溯以填充空洞。這確保了所有自動放置的專案都“按順序”出現,即使這會留下本可以被後續專案填充的空洞。

正式定義

初始值row
應用於網格容器
繼承性
計算值同指定值
動畫型別離散

正式語法

grid-auto-flow = 
[ row | column ] ||
dense

示例

設定網格自動佈局

HTML

html
<div id="grid">
  <div id="item1"></div>
  <div id="item2"></div>
  <div id="item3"></div>
  <div id="item4"></div>
  <div id="item5"></div>
</div>
<select id="direction">
  <option value="column">column</option>
  <option value="row">row</option>
</select>
<input id="dense" type="checkbox" />
<label for="dense">dense</label>

CSS

css
#grid {
  height: 200px;
  width: 200px;
  display: grid;
  gap: 10px;
  grid-template: repeat(4, 1fr) / repeat(2, 1fr);
  grid-auto-flow: column; /* or 'row', 'row dense', 'column dense' */
}

#item1 {
  background-color: lime;
  grid-row-start: 3;
}

#item2 {
  background-color: yellow;
}

#item3 {
  background-color: blue;
}

#item4 {
  grid-column-start: 2;
  background-color: red;
}

#item5 {
  background-color: aqua;
}

結果

規範

規範
CSS 網格佈局模組 Level 2
# grid-auto-flow-property

瀏覽器相容性

另見