grid

grid

Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。Grid 布局则是将容器划分成"行"和"列",可以看作是二维布局

采用网格布局的区域,称为"容器"(container)。容器内部采用网格定位的子元素,称为"项目"(item)。

常用容器属性
.container {
  display: grid;
  grid-template-columns: 100px 100px 100px;
  grid-template-rows: 100px 100px 100px;
}
.container {
  display: grid;
  grid-template-columns: 33.33% 33.33% 33.33%;
  grid-template-rows: 33.33% 33.33% 33.33%;
}
.container {
  display: grid;
  grid-template-columns: repeat(3, 33.33%);
  grid-template-rows: repeat(3, 33.33%);
}
//两列布局
.container {
  display: grid;
  grid-template-columns: 1fr 1fr;
}
//第一列的宽度为150像素,第二列的宽度是第三列的一半。
.container {
  display: grid;
  grid-template-columns: 150px 1fr 2fr;
}
//grid-row-gap用于设置行间距,grid-column-gap用于设置列间距。
.container {
  grid-row-gap: 20px;
  grid-column-gap: 20px;
}
//等价于
.container {
  grid-gap: 20px 20px;
}
//根据最新标准,上面三个属性名的grid-前缀已经删除,grid-column-gap和grid-row-gap写成column-gap和row-gap,grid-gap写成gap。
//justify-items属性设置单元格内容的水平位置(左中右),align-items属性设置单元格内容的垂直位置(上中下)。
.container {
  justify-items: start | end | center | stretch;
  align-items: start | end | center | stretch;
}
//place-items属性是align-items属性和justify-items属性的合并简写形式。
place-items: <align-items> <justify-items>;
place-items: start end;
justify-content属性是整个内容区域在容器里面的水平位置(左中右),align-content属性是整个内容区域的垂直位置(上中下)。

未完待续…

### Grid 布局技术介绍 CSS Grid 是一种强大的二维布局工具,允许开发者通过定义行和列来创建复杂的页面结构。它不仅提供了灵活的定位方式,还支持命名网格线等功能,使布局更加直观。 #### 定义网格容器 要启用 CSS Grid 布局,需将 `display` 属性设置为 `grid` 或 `inline-grid`。这会将父级元素转换成一个网格容器,其子元素则成为网格项[^2]。 ```css .container { display: grid; } ``` #### 设置网格轨道 可以通过 `grid-template-columns` 和 `grid-template-rows` 来指定网格的列宽和行高。这两个属性接受长度单位、百分比或关键字(如 `fr` 单位表示分数比例)作为参数。 ```css .grid-container { display: grid; grid-template-columns: 100px 200px auto; /* 列宽度 */ grid-template-rows: 50px 100px; /* 行高度 */ } ``` #### 命名网格线 为了提高可读性和维护性,可以给网格线赋予名称。这样,在放置项目时可以直接引用这些名字而不是依赖索引位置[^1]。 ```css .named-lines { display: grid; grid-template-columns: [start-line] 100px [middle-line] 100px [end-line]; grid-template-rows: [top-line] 50px [bottom-line]; } .item-a { grid-column: start-line / middle-line; /* 使用命名线条 */ } ``` #### 控制组件间距离 `.columnsGap()` 方法用于设定每列之间间隙大小,而在标准 CSS 中对应的属性是 `column-gap` 和 `row-gap`。对于多平台框架 HarmonyOS 的 `.columnsGap(10)` API,则专门用来调整列间的像素间隔[^3]。 ```css .gap-example { column-gap: 10px; /* 列间距 */ row-gap: 15px; /* 行间距 */ } ``` #### Flexbox vs. Grid Layout Flexbox 主要是针对单轴方向设计的一维解决方案;而 Grid 提供了完整的两维空间规划能力,更适合复杂网页的整体架构需求。 --- ### 示例代码片段 下面展示如何利用上述特性构建简单响应式卡片组: ```html <div class="card-grid"> <div>Card A</div> <div>Card B</div> <div>Card C</div> </div> <style> .card-grid { display: grid; gap: 20px; /* 统一内外边距 */ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); /* 自适应列数 */ } </style> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值