首页 > 其他分享 >Grid网格布局

Grid网格布局

时间:2022-09-21 09:44:59浏览次数:102  
标签:column 布局 网格 grid template Grid

简介

CSS 网格布局擅长于将一个页面划分为几个主要区域,以及定义这些区域的大小、位置、层次等关系(前提是 HTML 生成了这些区域)。是目前唯一的一种css二维布局。

像表格一样,网格布局让我们能够按行或列来对齐元素。然而在布局上,网格比表格更可能做到或更简单。例如,网格容器的子元素可以自己定位,以便它们像 CSS 定位的元素一样,真正的有重叠和层次。

  • 使用 display: grid 指定一个容器为网格布局,
  • 使用 grid-template-columns 和 grid-template-rows 设置 列 和 行 的尺寸大小

和flex布局的区别​    

Grid布局和flex布局是有实质性的区别的,flex是一维布局,只能处理一个维度上的布局,一行或者是一列。但是Grid布局是二维布局 ,将容器划分成了“行”和“列”,产生了一个个的网格,可以将网格元素放在行和列相关的位置上,从而达到了布局的目的。

术语表

  • 网格(Grid):通过设置 CSS 属性 display: grid; 可以定义一个 CSS 网格。
  • 网格线(Grid lines):使用Grid 布局在显式网格中定义轨道的同时会创建网格线。若有一个3列2行的网格,则它有 4 条列线和 3 条行线。
  • 网格轨道(Grid tracks):网格轨道是两条网格线之间的空间。
  • 网格单元格(Grid cell):网络单元格是 CSS 网格中的最小单元。它是四条网格线之间的空间,概念上非常像表格单元格。
  • 网格区域(Grid areas):网格区域是网格中由一个或者多个单元格组成的一个矩形区域。当你使用基于网格线位置放置一个项目或者使用命名的网格区域定义区域时,网格区域被创建。
  • 网格间隙(Gutters):网格间距是网格轨道之间的间距,可以通过 grid-column-gap (en-US),grid-row-gap (en-US) 或者 grid-gap (en-US) 在Grid 布局中创建。
  • 网格轴(Grid Axis):任何网格中都有两个轴,横轴(即行轴)和纵轴(即列轴)。
  • 网格行(Grid row):网格行是Grid 布局中的水平轨道,即两个水平网格线之间的空间。它通过属性 grid-template-rows 或者简写属性 grid, grid-template 定义。
  • 网格列(Grid column):网格列是Grid 布局中的垂直轨道,即两个垂直网格线之间的空间。它通过属性 grid-template-columns 或者简写属性 grid,grid-template 定义。

Grid父元素基本配置项

1.display:grid/inline-grid

注意,设为网格布局以后,容器子元素(项目)的float、display: inline-block、display: table-cell、vertical-align和column-*等设置都将失效

2.grid-template-columns / grid-template-rows

定义每一列(columns)、每一行(rows)的大小

显示效果为 三列三行的网格布局,
列宽分别为 100px 200px 300px;
行高分别为 300px 200px 100px;

eg: {
    display: grid;
    grid-template-columns: 100px 200px 300px;
    grid-template-rows: 300px 200px 100px;
}

repeat():
有时候,重复写同样的值非常麻烦,尤其网格很多时
这时,可以使用repeat()函数,简化重复的值
repeat()接受两个参数,第一个参数是重复的次数(下例是3),第二个参数是所要重复的值
repeat()重复某种模式也是可以的()

eg: {
    display: grid;
    grid-template-columns: repeat(3, 33.33%);;
    grid-template-rows: repeat(3, 33.33%);
}

fr关键字:
为了方便表示比例关系,网格布局提供了fr关键字(fraction 的缩写,意为"片段")。
如果两列的宽度分别为1fr和2fr,就表示后者是前者的两倍
fr可以与绝对长度的单位结合使用

eg: {
    display: grid;
    grid-template-columns: 150px 1fr 2fr;
}

3.column-gap / row-gap / gap:设置 列间距 / 行间距 / 间距大小

4.grid-auto-flow : row / column 排列方式

划分网格以后,容器的子元素会按照顺序,自动放置在每一个网格
默认的放置顺序是"先行后列",即先填满第一行,再开始放入第二行
也可以将它设成column,变成"先列后行",还有 row dense 和 column dense

5.justify-content和align-content

place-content:align-content和justify-content属性的缩写

- justify-content
整个内容区域在容器里面的水平位置(左中右)
- align-content
整个内容区域的垂直位置(上中下)

子元素基本配置项

1.grid-area:

为 grid-row-start / grid-column-start / grid-row-end / grid-column-end 的简写形式
grid-area: 行开始 列开始 行结束 列结束

从第2行第1列开始,并跨越2行3列

grid-area: 2 / 1 / span 2 / span 3;

更多详情:https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Grid_Layout

标签:column,布局,网格,grid,template,Grid
From: https://www.cnblogs.com/qianduanLamp/p/16712220.html

相关文章

  • CSS 网格 Gird 布局
    CSS网格Gird布局创建网格Gird通过将属性display的值设为grid,HTML元素就可以变为网格容器。注意:在CSS网格中,父元素称为容器(container),它的子元素称为项(items)。......
  • flex 布局属性
    父元素属性设置|-设置主轴方向|-设置子元素是跟着主轴来排序的方式|-默认的主轴是X轴Y轴是侧轴flex-direction:{row默认值从左到右row-reve......
  • 多列布局
    简介就是用CSS的column-count、column-width、column-gap、break-inside、page-break-inside等实现多列显示的功能。实现多列布局的常用属性column-count:设置列......
  • Flex弹性布局详解
    简介FlexibleBox模型,通常被称为flexbox弹性盒子布局,是一种一维的布局模型。它给flexbox的子元素之间提供了强大的空间分布和对齐能力。我们说flexbox是一种一维的......
  • 分享在winform下实现左右布局多窗口界面-续篇
    之前的这篇文章《分享在winform下实现左右布局多窗口界面》已经实现了左右布局多窗口界面,今天本来是研究基于winform的插件编程,没想到顺便又找到了另一种实现方案,这种实现......
  • 单标签实现复杂的棋盘布局
    最近,有群友问我,他们的一个作业,尽量使用少的标签去实现这样一个象棋布局:他用了60多个标签,而他的同学,只用了6个,问我有没有办法尽可能的做到利用更少的标签去完成这个布......
  • CSS Flexbox 布局
    CSS弹性盒子Flexbox布局Flexbox(弹性盒子)是CSS3中引入的一种强大且兼容性好的布局方法。使用flexbox,可以很容易地处理好页面上的元素布局,并创建可以自动缩小和放大的......
  • Android最强布局——ConstraintLayout约束布局
    ConstraintLayout首先,现附上官方文档:ConstraintLayout官方文档约束布局ConstraintLayout是一个ViewGroup,可以在Api9以上的Android系统使用它,它的出现主要是为了解决布局......
  • 对象的内存布局解析
    概念说明Hotspot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(InstanceData)和对齐填充(Padding)。对象头:比如hash码,对象所属的年代,对......
  • CSS 网格基础
    CSS网格基础本周我决定研究定位和布局网站的最佳方法之一……CSS网格布局模块。使用这种方法可以很好地布置网站、应用程序甚至是一个小元素容器。它允许我们开发人员在......