masonry-auto-flow

實驗性: 這是一項實驗性技術
在生產環境中使用此功能之前,請仔細檢視瀏覽器相容性表

masonry-auto-flow CSS 屬性修改了在砌體佈局中使用CSS 網格佈局時專案的放置方式。

語法

css
/* Keyword values */
masonry-auto-flow: pack;
masonry-auto-flow: next;
masonry-auto-flow: ordered;
masonry-auto-flow: definite-first;
masonry-auto-flow: next ordered;

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

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

  • 單個關鍵字:packnextdefinite-firstordered 之一
  • 兩個關鍵字,例如 next ordered

pack

根據預設的砌體演算法,專案將放置在空間最大的軌道中。

next

專案將按網格軸順序一個接一個地放置。

definite-first

如預設的砌體演算法所示顯示,先放置具有確定位置的專案,然後再放置其他砌體專案。

ordered

忽略任何具有確定位置的專案,並根據順序修改後的文件順序放置所有專案。

正式定義

初始值pack
應用於具有砌體佈局的網格容器
繼承
計算值按指定值
動畫型別離散

正式語法

錯誤:找不到此專案的語法

示例

使用 next 關鍵字

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="flow">
  <option value="pack">pack</option>
  <option value="next">next</option>
</select>

CSS

css
#grid {
  height: 200px;
  width: 200px;
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: masonry;
  masonry-auto-flow: pack;
}

#item1 {
  background-color: lime;
  height: 2em;
}

#item2 {
  background-color: yellow;
}

#item3 {
  background-color: blue;
  height: 3em;
}

#item4 {
  background-color: red;
  height: 2.5em;
}

#item5 {
  background-color: aqua;
  height: 4em;
}
js
const selectElem = document.querySelector("select");

function changeMasonryFlow() {
  const grid = document.getElementById("grid");
  const direction = document.getElementById("flow");
  const masonryAutoFlow = direction.value === "pack" ? "pack" : "next";

  grid.style.masonryAutoFlow = masonryAutoFlow;
}

selectElem.addEventListener("change", changeMasonryFlow);

結果

規範

未找到規範

未找到 css.properties.masonry-auto-flow 的規範資料。
檢查此頁面是否存在問題或為缺少的 spec_url 貢獻內容至 mdn/browser-compat-data。同時確保規範包含在 w3c/browser-specs.

瀏覽器相容性

BCD 表格僅在瀏覽器中載入