首页 > 其他分享 >grid布局

grid布局

时间:2024-09-13 18:20:26浏览次数:12  
标签:布局 元素 网格 content grid template 属性

grid是一个css所有的网格容器的简写属性,可以设置以下属性:

  • 显式网格属性: grid-template-rows、grid-template-columns 和 grid-template-areas
  • 隐式网格属性: grid-auto-rows、grid-auto-columns 和 grid-auto-flow
  • 间距属性:grid-column-gap 和 grid-row-gap

网格容器

要使 HTML 元素变成一个网格容器,可以将 display 属性设置为 grid 或 inline-grid。

网格容器内放置着由列和行内组成的网格元素。

.grid-container {
  display: grid;
}

grid-template-columns 属性

grid-template-columns 属性定义了网格布局中的列的数量,它也可以设置每个列的宽度。

属性值是一个以空格分隔的列表,其中每个值定义相对应列的宽度。

如果您希望网格布局包含 4 列,则需要设置 4 列的宽度,如果所有列的宽度都是一样的,可以设置为 auto。

.grid-container {
  display: grid;
  grid-template-columns: auto auto auto auto;
}

**注意:**如果您在 4 列网格中有 4 个以上的网格元素,网格布局会生成新的一行放置该元素。

grid-template-columns 属性也可用于指定列的宽度。

.grid-container {
  display: grid;
  grid-template-columns: 80px 200px auto 40px;
}

grid-template-rows 属性

grid-template-rows 属性设置每一行的高度。

属性值是一个以空格分隔的列表,其中每个值定义相对应行的高度:

.grid-container {
  display: grid;
  grid-template-rows: 80px 200px;
}

justify-content 属性

justify-content 属性用于对齐容器内的网格,设置如何分配顺着弹性容器主轴(或者网格行轴) 的元素之间及其周围的空间。

注意:网格的总宽度必须小于容器的宽度才能使 justify-content 属性生效。

在这里插入代码片.grid-container {
  display: grid;
  justify-content: space-evenly; // "space-evenly" 用于均匀排列每个元素,每个元素之间的间隔相等
  
  justify-content: space-around; // "space-around" 均匀排列每个元素,每个元素周围分配相同的空间
  // 可以理解为每个元素的padding相等
  
  justify-content: space-between; // "space-between" 均匀排列每个元素,首个元素放置于起点,末尾元素放置于终点
  
  justify-content: center; // "center" 在容器中居中
  
  justify-content: start; // "start" 在容器中从行首开始排列
  justify-content: end; // "end" 排列在容器的行尾
}

align-content 属性

align-content 属性用于设置垂直方向上的网格元素在容器中的对齐方式。

注意:网格元素的总高度必须小于容器的高度才能使 align-content 属性生效。

在这里插入代码片.grid-container {
  display: grid;
  height: 400px;
  align-content: center; // "center" 属性值用于设置容器中所有行居中对齐
  
  align-content: space-evenly; // "space-evenly" 属性值用于设置容器中每一行间隔相等
  
  align-content: space-around; // "space-around" 属性值用于设置容器中每一行分配相同的空间
  
  align-content: space-between; // "space-between" 属性值用于均匀排列每一行,第一行放置于开始处,最后一行放置于末尾
  
  align-content: start; // "start" 属性值用于设置在容器开始处开始排列
  
  align-content: end; // "end" 属性值用于设置在容器末尾处开始排列
}

CSS 网格元素

网格容器包含了一个或多个网格元素。

默认情况下,网格容器的每一列和每一行都有一个网格元素,我们也可以设置网格元素跨越多个列或行,行和列为行号。

grid-column 属性

grid-column 属性定义了网格元素列的开始和结束位置。

注意: grid-column 是 grid-column-start 和 grid-column-end 属性的简写属性。

我们可以参考行号来设置网格元素,也可以使用关键字 “span” 来定义元素将跨越的列数。

.item1 {
  grid-column: 1 / 5;  // "item1" 在第 1 列开始,在第 5 列前结束
}

.item6 {
  grid-column: 2 / span 3; // "item6" 从下一个2列开始跨越 3 列
}

grid-row 属性

grid-row 属性定义了网格元素行的开始和结束位置。

注意: grid-row 是 grid-row-start 和 grid-row-end 属性的简写属性。

我们可以参考行号来设置网格元素,也可以使用关键字 “span” 来定义元素将跨越的行数。

.item1 {
  grid-row: 1 / 4; // "item1" 在第 1 行开始,在第 4 行前结束
}

.item7 {
  grid-row: 1 / span 2; // "item7" 跨越两行
}

grid-area 属性

grid-area 属性是 grid-row-start, grid-column-start, grid-row-end 以及 grid-column-end 属性的简写。

.item3 {
  grid-area: 1 / 2 / 5 / 6; //  "item3" 从第 1 行开始和第 2 列开始, 第 5 行和第 6 列结束
}

.item8 {
  grid-area: 2 / 1 / span 2 / span 3; // "item8" 从第 2 行开始和第 1 列开始, 横跨 2 行 3 列
}

网格元素命名

grid-area 属性可以对网格元素进行命名。

命名的网格元素可以通过容器的 grid-template-areas 属性来引用。

//  item1 命名为 "myArea", 并跨越五列
.item1 {
  grid-area: myArea;
}
.grid-container {
  grid-template-areas: 'myArea myArea myArea myArea myArea';
}

// 每行由单引号内 ' ' 定义,以空格分隔。
// . 号表示没有名称的网格项。
.item1 {
  grid-area: myArea;
}
.grid-container {
  grid-template-areas: 'myArea myArea . . .';
}

// 要定义两行,请在另一组单引号内 ' ' 定义第二行的列。"item1" 跨越 2 行 2 列
.item1 {
  grid-area: myArea;
}
.grid-container {
  grid-template-areas: 'myArea myArea . . .' 'myArea myArea . . .';
}

网格元素的顺序

网格布局允许我们将网格元素放置在我们喜欢的任何地方。

HTML 代码中的第一元素不一定非要显示为网格中元素的第一项。

.item1 { grid-area: 1 / 3 / 2 / 4; }
.item2 { grid-area: 2 / 3 / 3 / 4; }
.item3 { grid-area: 1 / 1 / 2 / 2; }
.item4 { grid-area: 1 / 2 / 2 / 3; }
.item5 { grid-area: 2 / 1 / 3 / 2; }
.item6 { grid-area: 2 / 2 / 3 / 3; }

标签:布局,元素,网格,content,grid,template,属性
From: https://blog.csdn.net/weixin_43659550/article/details/142138358

相关文章

  • UniGUI的布局(结合官方自带DEMO)要点记录
    UniGUI的页面布局还是比较方便的,基本什么的排版都能搞好。但UniGUI的资料实在是太少,只能看到一些零星的资料,结合UniGUI官方自带的DEMO,本人将布局有关要点整理了一下,方便查阅,也供各位爱好者参考,不对之处,敬请指正。一、布局方式传统Delphi程序的布局方法通过将属性Align添加到......
  • 【JUC】16-Java对象内存布局和对象头
    1.对象的内存布局 在HotSpot虚拟机里,对象在堆内存中的存储布局可以分为三个部分:对象头、实例数据和对齐填充。对象头:由对象标记和类型指针。......
  • 【CSS in Depth 2 精译_029】5.2 Grid 网格布局中的网格结构剖析(上)
    当前内容所在位置(可进入专栏查看其他译好的章节内容)第一章层叠、优先级与继承(已完结)1.1层叠1.2继承1.3特殊值1.4简写属性1.5CSS渐进式增强技术1.6本章小结第二章相对单位(已完结)2.1相对单位的威力2.2em与rem2.3告别像素思维2.4视口的相对单位2.5......
  • 自适应多列布局
    关于多列布局,我们平时开发中,可能会遇到如下需求:一个父元素中包含n个子元素,每一行显示m个子元素,并且根据设备宽度实现自适应布局。针对这种布局方式,可以使用CSSGrid或CSSFlexbox来实现:方案一:使用CSSGrid实现自适应列布局CSSGrid通过设置grid-template-columns为......
  • HarmonyOS开发之Swiper页面布局
    在HarmonyOSNEXT中使用Swiper组件进行页面布局时,为了提供更好的用户体验,我们可以实现一些自定义的动画效果以及自定义指示器。以下是两个具体的实现方案:场景一:Swiper页面支持自定义动画要实现Swiper页面支持自定义动画,我们需要设置Swiper组件的属性,并添加相应的事件处理程序来控制......
  • 移动端web app自适应布局探索与总结
    1、困扰多时的问题在这之前做webapp开发的的时候,在自适应方面一般都是宽度通过百分比,高度以iPhone6跟iPhone5之间的一个平衡值写死,我们的设计稿都是iPhone5的640*1136标准,所以高度一般取个大概值,各种图标的宽高也是取平衡值写死,然后部分样式通过媒体查询来设置,例如背景图的......
  • DevExpress WinForms中文教程:Data Grid - 如何自定义行和单元格的样式?
    在本教程中您将学习如何使用事件更改数据单元格样式,您将从要给显示任务数据的网格开始,并且没有应用条件格式。通过处理GridView.RowStyle事件,您将对Priority字段值为High的行应用不同的背景颜色。然后如果Status设置为New,您将使用GridView.RowCellStyle事件来突出显示这些行中的St......
  • WPF UNO 测试固定尺寸且水平和垂直对齐设置 Stretch 的元素在容器内的布局行为
    本文将告诉大家我对WPF的自定义布局容器和自定义控件进行的布局行为测试中的一个小点,即测试固定元素的尺寸的情况下或元素尺寸为有限尺寸的情况下,同步设置元素的水平和垂直对齐为Stretch来测试元素在容器内的布局行为,元素分别在容器给元素的布局尺寸大于元素的尺寸和小于元素......
  • 【CSS in Depth 2 精译_028】第五章 网格布局 + 5.1 构建基础网格
    当前内容所在位置(可进入专栏查看其他译好的章节内容)第一章层叠、优先级与继承(已完结)1.1层叠1.2继承1.3特殊值1.4简写属性1.5CSS渐进式增强技术1.6本章小结第二章相对单位(已完结)2.1相对单位的威力2.2em与rem2.3告别像素思维2.4视口的相对单位2.5......
  • Ethereum学习笔记 ---- 使用 Remix 调试功能理解 bytes 在 memory 中的布局
    目录编写合约编译、部署、调用合约调试交易1.调用函数bytesInMemory(),分析bytes的MemoryLayout执行RETUR前的最后一刻,stack快照如下执行完毕时刻的MemoryLayout对MemoryLayout的分析2.调用函数bytesArrayInMemmory(4),分析bytes[]的MemoryLayout执行RETUR前......