Keep

CSS Grid

更新:

Grid

// 定义 layout
* display: grid/inline-grid;

// 定义 grid 如何布局
* grid-template-rows: 50px 100px;

// 1fr 1fr 2fr; Fraction 相对于剩余空间;
// minmax(100px, auto);
// repeat(4, 100px);
// repeat(4, 1fr);
// repeat(auto-fit, minmax(100px, 1fr))  -> 根据 minmax 设定,尽可能多的生成轨道,但不会有空 grid
// repeat(auto-fill, minmax(100px, 1fr)) -> 根据 minmax 设定,尽可能多的生成轨道 (grid)
// 1fr auto; -> 右侧根据内容自适应宽度,左侧占额外空间。grid 在父级能定义子元素尺寸。flex 需要在子元素上定义
// 1fr minmax(200px, auto)
// https://developer.mozilla.org/en-US/docs/Web/CSS/fit-content_function
// min-content, max-content, fit-content(n)
// 1fr 类似 flex: auto[0 1 auto];
* grid-template-columns: 100px 200px;
// 简写
// grid-template = grid-template-rows / grid-template-columns;
// https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template
* grid-template: repeat(auto-fit, minmax(100, 1fr)) / 120px 240px;

// 支持 line 命名
* grid-template-rows:    [row-1-start] 1fr [row-2-start] 1fr [row-2-end];
* grid-template-columns: [col-1-start] 1fr [col-2-start] 1fr [col-3-start] 1fr [col-3-end];

// 定义 areas, 给 grid 命名 - 先命名再划分 grid ?!
* grid-template-areas

// 定义 grid-item 排列方向
// dense 尽可能填充空白算法
* grid-auto-flow: row[default]/column dense;

// 定义 (grid-template-* 未定义的) grid 尺寸,根据 space/grid-item 自动计算。
// 即,使用轨道,那么轨道就存在
// https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-columns
* grid-auto-rows: 100px;
* grid-auto-columns: 100px;

// gap
// 定义 grid-item 之间间距 gap
// https://developer.mozilla.org/zh-CN/docs/Web/CSS/gap
// 下面语法升级
/*
* grid-row-gap: 10px;
* grid-column-gap: 10px;
// 简写
* grid-gap = grid-row-gap grid-column-gap;
*/
* column-gap: 10px;
* row-gap: 10px;
// 简写
* gap: 10px;

// 对齐方式
// 定义 grid-item 在 InlineAxis 方向中的位置。
// value: auto/normal/start/end/center/stretch/baseline/first baseline/last baseline
* justify-items
// 定义 grid-item 在 BlockAxis 方向中的位置
* align-items
// 简写 (flex/grid)
* place-items: align-items justify-items;

// 定义 space 如何处理
// value: normal/start/end/center/stretch/space-round/space-between/space-evenly/baseline/first baseline/last baseline
* justify-content
* align-content
// 简写
* place-content: align-content justify-content

// grid 简写
// https://developer.mozilla.org/en-US/docs/Web/CSS/grid

Grid-Item

// 定义 grid-item 位置。索引从 1 开始
// 支持使用 line 名称定义。ex: grid-row-end: row-2-end;
// start/end 支持负值
// start 可以比 end 大,会自动交换 start/end;
* grid-row-start
* grid-row-end
* grid-column-start
* grid-column-end

// 简写。grid-row = grid-row-start grid-row-end;
* grid-row
* grid-column
// ex:
// grid-row: 1/3;
// grid-row: 2; => 2/3

// 支持 grid 合并 (span) 写法。
// span 会影响 start/end 的值;
* grid-row: 2 / span 3;

// 简写。grid-area = grid-row-start/grid-column-start/grid-row-end/grid-clumn-end;
* grid-area

// 定义 grid-item 在 row 方向中的位置。
// value: auto/normal/start/end/stretch/baseline/first baseline/last baseline
* justify-self: center
 // 定义 grid-item 在 column 方向中的位置
* align-self: center

// grid 情况下,可直接使用 z-index
// https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_positioned_layout/Understanding_z-index/Stacking_context
* z-index

// 定义 grid-item 顺序。支持负值
* order

Ref


avatar image

@read2025, 生活在北京(北漂),程序员,宅,马拉松[纯粹],喜欢动漫。"骑士总能救出公主,是因为恶龙从没伤害过她"