grid-column-start

Baseline 已广泛支持

此功能已非常成熟,可在多种设备和浏览器版本上使用。自 2017 年 10 月以来,它已在各大浏览器中可用。

grid-column-start 是一个 CSS 属性,它通过为网格项目的网格放置贡献一条线、一个跨度或不贡献任何内容(自动),来指定网格项目在网格列中的起始位置。此起始位置定义了 网格区域 的块级起始边缘。

试一试

grid-column-start: auto;
grid-column-start: 2;
grid-column-start: -1;
grid-column-start: span 2;
<section class="default-example" id="default-example">
  <div class="example-container">
    <div class="transition-all" id="example-element">One</div>
    <div>Two</div>
    <div>Three</div>
  </div>
</section>
.example-container {
  border: 1px solid #c5c5c5;
  display: grid;
  grid-template-columns: 1fr 1.5fr 1fr;
  grid-template-rows: repeat(3, minmax(40px, auto));
  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;
}

语法

css
/* Keyword value */
grid-column-start: auto;

/* <custom-ident> value */
grid-column-start: some-grid-area;

/* <integer> + <custom-ident> values */
grid-column-start: 2;
grid-column-start: some-grid-area 4;

/* span + <integer> + <custom-ident> values */
grid-column-start: span 3;
grid-column-start: span some-grid-area;
grid-column-start: span some-grid-area 5;

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

此属性被指定为单个 <grid-line> 值。一个 <grid-line> 值可以指定为:

  • 要么是 auto 关键字
  • 要么是 <custom-ident>
  • 要么是 <integer>
  • 要么是 <custom-ident><integer>,两者用空格分隔
  • 要么是关键字 span 以及 <custom-ident><integer>,或两者都有。

auto

一个关键字,表示该属性对网格项目的放置没有任何贡献,表示自动放置、自动跨度或默认跨度为 1

<custom-ident>

如果存在一个名为 <custom-ident>-start 的命名线,它将该命名线的第一条贡献给网格项目的放置。

注意: 命名网格区域会自动生成此形式的隐式命名线,因此指定 grid-column-start: foo; 将选择该命名网格区域的起始边缘(除非在此之前明确指定了另一条名为 foo-start 的线)。

否则,这将被视为指定了整数 1<custom-ident>

<integer> && <custom-ident>?

贡献第 n 条网格线到网格项目的放置。如果给出负整数,则从显式网格的末尾边缘开始反向计数。

如果以 <custom-ident> 形式给出名称,则只计算具有该名称的线。如果具有该名称的线不足,则为了查找此位置,所有隐式网格线都被假定具有该名称。

<integer>0 是无效的。

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

贡献一个网格跨度到网格项目的放置,使得网格项目网格区域的列起始边缘与结束边缘相距 n 条线。

如果以 <custom-ident> 形式给出名称,则只计算具有该名称的线。如果具有该名称的线不足,则为了计算此跨度,显式网格上与搜索方向对应的所有隐式网格线都被假定具有该名称。

如果省略了 <integer>,则默认为 1。负整数和 0 是无效的。

<custom-ident> 不能取 spanauto 值。

正式定义

初始值auto
应用于网格项目和包含块是网格容器的绝对定位框
继承性
计算值同指定值
动画类型离散

正式语法

grid-column-start = 
<grid-line>

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

示例

设置网格项目的列起始位置

HTML

html
<div class="wrapper">
  <div class="box1">One</div>
  <div class="box2">Two</div>
  <div class="box3">Three</div>
  <div class="box4">Four</div>
  <div class="box5">Five</div>
</div>

CSS

css
.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: 100px;
}

.box1 {
  grid-column-start: 1;
  grid-column-end: 4;
  grid-row-start: 1;
  grid-row-end: 3;
}

.box2 {
  grid-column-start: 1;
  grid-row-start: 3;
  grid-row-end: 5;
}

结果

规范

规范
CSS 网格布局模块 Level 2
# line-placement

浏览器兼容性

另见