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 表格仅在浏览器中加载