CSS 网格 Gird 布局

创建网格 Gird

通过将属性 display 的值设为 grid,HTML 元素就可以变为网格容器。

注意: 在 CSS 网格中,父元素称为容器(container),它的子元素称为项(items)。

#container {display: grid;
}

列,行 Column Row

在一个网格容器中使用 grid-template-columns 属性可以添加一些列,示例如下:

.container {display: grid;grid-template-columns: 50px 50px;
}

上面的代码会在网格容器中添加两列,宽度均为 50px。 grid-template-columns 属性值的个数表示网格的列数,每个值表示相应的列宽度。

创建的网格会自动设置行数。 要手动调整行,使用 grid-template-rows 属性。

.container {display: grid;grid-template-columns: 50px 50px;grid-template-rows: 50px 50px;
}

单位 Unit

在 CSS 网格中,可以使用绝对单位(如 px)或相对单位(如 em)来定义行或列的大小。 下面的单位也可以使用:

fr:设置列或行占剩余空间的比例,

auto:设置列宽或行高自动等于它的内容的宽度或高度,

%:将列或行调整为它的容器宽度或高度的百分比,

grid-template-columns: 1fr 100px 2fr;

间距 Gap

如果需要在列与列之间添加一些间距,我们可以使用 grid-column-gap.

grid-column-gap: 20px;

还可以用 grid-row-gap设置行间距。

grid-row-gap: 5px;

grid-gap 属性是前两个挑战中出现的 grid-row-gapgrid-column-gap 的简写属性,它更方便使用。 如果 grid-gap 只有一个值,那么这个值表示行与行之间、列与列之间的间距均为这个值。

如果有两个值,那么第一个值表示行间距,第二个值表示列间距

grid-gap: 10px 20px;

空间大小 Spacing

到目前为止,所有的讨论都是围绕网格容器的。 grid-column 属性是用于网格项本身的属性。

网格中,假想的水平线和垂直线被称为线(lines)。 这些线在网格的左上角从 1 开始编号,垂直线向右、水平线向下累加计数。

要设置一个网格项占据几列,使用 grid-column 属性加上网格线条的编号来定义网格项开始和结束的位置。

grid-column: 2 / 4;

也可以设置它占用多行。 使用 grid-row 属性来定义一个网格项开始和结束的水平线。

grid-row: 2 / 4;

对齐 Align

在 CSS 网格中,每个网格项的内容分别位于被称为单元格(cell)的框内。 使用网格项的 justify-self 属性,设置其内容的位置在单元格内沿水平轴的对齐方式。 默认情况下,这个属性的值是 stretch,这将使内容占满整个单元格的宽度。 该 CSS 网格属性也可以使用其他的值:

start:使内容在单元格左侧对齐,

center:使内容在单元格居中对齐,

end:使内容在单元格右侧对齐

justify-self: center;

正如能设置网格项沿水平方向的对齐方式一样,我们也可以设置网格项沿竖直方向的对齐方式。 为此,可以对网格项使用 align-self 属性来实现。

align-self: end;

CSS 网格中的网格项共享对齐方式。 可以分别设置它们的对齐方式,也可以对网格容器使用 justify-items 使它们一次性沿水平轴对齐。 这个属性能接受之前两个中学到的所有值作为属性值,但与之前不同的是,它会将网格中 所有 的网格项按所设置的方式对齐。

justify-items: center;

对网格容器使用 align-items 属性可以让网格中所有的网格项沿竖直方向对齐。

align-items: end;

分区 Area

可以将网格中的一些单元格组合成一个区域(area),并为该区域指定一个自定义名称。 可以通过给容器加上 grid-template-areas来实现:

grid-template-areas:"header header header""advert content content""advert footer footer";

在为网格添加区域模板后,可以通过引用所定义的区域的名称,将元素放入相应的区域。 为此,需要对网格项使用 grid-area

.item1 {grid-area: header;
}

grid-area 属性还有另一种使用方式。 如果网格中没有定义区域模板,也可以像这样为它添加一个模板:

item1 { grid-area: 1/1/2/4; }

上例中数字代表这些值:

grid-area: horizontal line to start at / vertical line to start at / horizontal line to end at / vertical line to end at;

重复 Repeat

使用 repeat 方法指定行或列的重复次数,后面加上逗号以及需要重复的值。

grid-template-columns: repeat(2,1fr,50px) 20px;

限制项目大小 Limit Item Size

内置函数 minmax 也可用于设置 grid-template-columnsgrid-template-rows 的值。 它的作用是在网格容器改变大小时限制网格项的大小。 为此,需要指定网格项允许的尺寸范围。

grid-template-columns: 100px minmax(50px, 200px);

自动填充 Auto Fill

repeat 方法带有一个名为自动填充(auto-fill)的功能。 它的功能是根据容器的大小,尽可能多地放入指定大小的行或列。 可以通过结合 auto-fillminmax 来更灵活地布局。

grid-template-columns: repeat(auto-fill, minmax(60px, 1fr));

auto-fit 效果几乎和 auto-fill一样。 不同点仅在于,当容器的大小大于各网格项之和时,auto-fill 会持续地在一端放入空行或空列,这样就会使所有网格项挤到另一边;而 auto-fit 则不会在一端放入空行或空列,而是会将所有网格项拉伸至合适的大小。

注意: 如果容器宽度不足以将所有网格项放在同一行,余下的网格项将会移至新的一行。

grid-template-columns: repeat(auto-fit, minmax(60px, 1fr));

嵌套网格 Nested Grid

将元素转换为网格只会影响其子元素(即直接后代元素,英文为 direct descendants。意思是一个元素的所有后代元素中,父级元素为该元素的所有元素)。 因此,如果把某个子元素设置为网格,就会得到一个嵌套的网格。

display: grid;
grid-template-columns: auto 1fr;

CSS 网格 Gird 布局相关推荐

  1. 前端布局之网格gird布局(简单易懂)

    grid网格布局 前言 弹性布局的文章很多,但是它是解决一维布局的,面对二维就显得无力了,此时我们就需要用到网格布局.(ps:一维就是一列或者一行的布局,当你遇到九宫盒布局,此时涉及到列与行,便是二维 ...

  2. CSS 网格(Grid)布局

    CSS Grid 布局是一种二维布局方式,可以将页面分成行和列,并在其中放置元素.使用 Grid 布局时,需要定义网格容器和网格项目. 第一步,在网格容器元素(通常是一个 div)上设置 displa ...

  3. CSS - 网格布局(grid)

    目录 什么是网格布局 网格布局与弹性布局的比较 网格布局中的概念名词 网格容器 display:grid.display:inline-grid 网格轨道 grid-template-rows.gri ...

  4. 【CSS布局】gird布局和flex布局

    今天主要回顾一下CSS布局相关的问题 CSS CSS 是用来指定文档如何展示给用户的一门语言--如网页的样式.布局.等等. CSS布局 正常布局流 正常布局流 (normal flow) 是指在不对页 ...

  5. css 网格布局_我从CSS网格布局中学到的东西

    css 网格布局 by Jennifer Wjertzoch 珍妮弗·维佐奇 我从CSS网格布局中学到的东西 (Things I've learned about CSS grid layout) W ...

  6. 翻译 | CSS网格(CSS Grid)布局入门

    原文地址:Getting to know CSS Grid Layout 原文作者:Chris Wright 译者:华翔 校对者:珂珂.干干 翻译 | CSS网格(CSS Grid)布局入门 bann ...

  7. css怎么设置圆角背景,CSS新特性:圆角边框多栏Gird布局背景设置

    到现在为止,只有一些已经工作的CSS3特性. 到现在为止,只有一些已经工作的特性,他们中的一些如下: 圆角 从web2.0开始,开始流行使用圆角,如果你不使用圆角,你的网站可能不会被列入web2.0网 ...

  8. css 网格布局_CSS网格布局

    css 网格布局 网格布局 (Grid Layout) CSS Grid Layout, simply known as Grid, is a layout scheme that is the ne ...

  9. css 网格布局_CSS网格布局三年

    css 网格布局 As I was updating my slides for An Event Apart in San Francisco, I realised how much comple ...

  10. 前端设计-css网格布局的最佳实践

    越来越常见的问题-现在人们正在使用css网格布局来生产-似乎是"最好的做法是什么?"这个问题的简短答案是使用规范中定义的布局方法.您选择使用的规范的特定部分,以及如何将网格与其他布 ...

最新文章

  1. java maven项目使用sonar审核代码
  2. 普渡大学计算机硕士申请条件,普渡大学CS硕士申请需要哪些条件?未来的就业前景全面解析...
  3. jeecg中ajax传值的前端js和后台代码
  4. 鸿蒙系统打通iOS,库克真的做到了!正式官宣确认截胡鸿蒙OS系统:软硬件生态全打通...
  5. git复制迁移--SmartGit
  6. Mac Air 配置Android开发环境
  7. java流水号_java自动生成编号的实现(格式:yyMM+四位流水号)
  8. 代码运行:CornerNet源码
  9. matlab投资组合权重,【原创】投资组合风险-收益关系的Matlab实现
  10. Schema hasn't been registered for model 解决方案
  11. 怎样判断一个数能否被7整除
  12. VR中的9轴传感器(重力加速度/陀螺仪/磁力计)
  13. eBPF/XDP实现防火墙功能
  14. 计算机实际应用的例子,作业二:单工通信;半双工通信; 双工通信;有哪些实际应用的例子...
  15. Android Studio 在library中引用本地arr的办法
  16. 如何在opengl用代码绘制英文_如何用Python画一只肥肥的柯基狗狗——turtle库绘制椭圆与弧线实践...
  17. 华为电脑HUAWEI MateBook X 2021如何进BIOS设置
  18. 字符串(1) : 首字母转大写/小写
  19. 华为云MapReduce编程实践学习笔记(三)
  20. idea连接oracle报错:listener does not currently know of SID given in connect descriptor

热门文章

  1. 新闻人物言论自动提取
  2. “衣衫合身定制”获数百万元天使轮投资,在线定制男性专属衬衫
  3. 概率与数理统计学习总结四---连续型随机变量及其概率密度
  4. 祝新年快乐html小程序,小程序网页开发真诚的祝福大家2018...
  5. learn the python in hard way习题36~39的附加习题
  6. python pinv和inv总结
  7. 微信支付V3版商家转账到零钱
  8. (附源码)springboot社区文明养宠平台 毕业设计 231609
  9. 二阶系统的单位阶跃响应与比例控制器
  10. VMware虚拟机三种网络连接模式详解