音效素材网提供各类素材,打造精品素材网站!

站内导航 站长工具 投稿中心 手机访问

音效素材

CSS Gird布局教程指南
日期:2021-09-06 09:27:29   来源:脚本之家

CSS网格布局是一个二维的基于网格的布局系统, 其目的在于完全改变我们设计基于网络的用户界面的方式。CSS一直用来布局我们的网页, 但是他从来没有做过很好的工作, 最开始我们使用表格,然后 float , positioninline-block 。但是这些本质上是css的hack, 并且遗漏了很多重要的功能(例如垂直居中),后来flexbox出现了, 但是他的目的只是为了更简单的一维布局, 而不是复杂的二维布局。网格是第一个专门为解决布局问题而创建的CSS模块 在浏览器兼容性方面,可以看一下caniuse的数据

CSS Gird布局教程指南 

网格容器

在元素中应用 display: grid 。这是所有网格布局的直接父元素, 在这个例子中 container 是网格容器

<div class="container">
  <div class="item item-1"></div>
  <div class="item item-2"></div>
  <div class="item item-3"></div>
</div>

网格项目

网格容器的小孩(例如直接子元素),这里的 item 元素是网格项目,但 sub-item 不是

<div class="container">
  <div class="item"></div>
  <div class="item">
    <div class="sub-item"></div>
  </div>
  <div class="item"></div>
</div>

网格线

构成网格结构的分界线, 他们既可以是垂直的(列)也可以是水平的(行)。这里的黄线是一个列网格线的例子

CSS Gird布局教程指南 

网格轨道

两个相邻网格线之间的空间。你可以把它们想象成网格的列或行。这是第二行和第三行网格线之间的网格轨道

CSS Gird布局教程指南

 网格单元格

两个相邻的行和两个相邻的列网格线之间的空间,也就是网格中的一个单元,这是行网格线1和2之间的网格单元, 以及列网格线2和3

CSS Gird布局教程指南

 网格空间

四个网格线包围的总空间,网格空间可以由任意数量的网格单元组成。这里是行网格线1和3之间的网格空间, 以及列网格线1和3

CSS Gird布局教程指南

 网格容器的属性

display

将元素定义为网格容器, 并未其内容建立新的网格格式上下文 值:

  1. gird: 生成块级网格
  2. inline-grid: 生成内联网格
  3. subgrid: 如果你的网格容本身是一个网格项目(即嵌套网格), 你可以使用这个属性来表明你想继承他父母的行/列而不是他自己的。
.container{
  display: grid | inline-grid | subgrid
}

grid-template-columns, grid-template-rows

使用空格分隔的值列表来定义网格的列和行。这些值表示轨道大小,他们之间的空间表示网格线 值:

: 可以是网格中的空闲空间的长度,百分比, 或分数

: 线的名称 例如, 在网格轨迹之间流出空白区域时, 网格线会自动分配数字名称

.container{
  display: grid;
  grid-template-columns: 40px 50px auto 50px;
  grid-template-rows: 25% 100px auto;
}

CSS Gird布局教程指南

但是你可以选择明确命名行,请注意行名称的括号语法

.container{
  grid-template-columns: [first] 40px [line2] 50px [line2] auto [line3] auto [col4-start] 50px [five] 5px; 
  grid-template-rows: [row1-start] 25% [row1-end] 100px [thrid-line] auto [last-line];
}

CSS Gird布局教程指南

请注意,一行/列可以有多个名字,例如这里第二列将有两个名字

.contaienr{
  grid-template-rows: [row1-start] 25% [row1-end row2-start] 25% [row2-end]
}

如果您的定义包含重复的部分,您可以使用repeat()符号来简化

.container{
  grid-template-columns: repeat(3, 20px [col-start]) 5%;
}

相当于这个

.container{
  grid-template-columns: 20px [col-start] 20px [col-start] 20px [col-start] 5%;
}

设置单位为 fr 网格会允许您设置的网格轨道大小为网格容器的自由空间的一小部分,例如,这会将每个项目设置为容器宽度的三分之一

.container {
  grid-template-columns: 1fr 1fr 1fr;
}

可用空间是在任何非弹性项目之后计算的,在这个例子中, fr 单元可用空间的总量不包括50px

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

grid-template-areas

通过应用 grid-area 属性指定网格空间的名称来定义网格模板。 值:

  1. : 指定的网格空间的名称 grid-area
  2. : 表示一个空的网格单元
  3. none: 没有定义网格空间
.container{
  grid-template-areas: "<grid-area-name> | . | none | ...";
}

例子

.container{
  display: grid;
  grid-template-columns: repeat(4, 50px);
  grid-template-rows: auto;
  grid-template-areas: 
    "header header header header"
    "main main . slidebar"
    "footer footer footer footer"
}
.item-a{
  grid-area: header;
}
.item-b{
  grid-area: main;
}
.item-c{
  grid-area: slidebar;
}
.item-d{
  grid-area: footer;
}

CSS Gird布局教程指南

注意: 你不是用这个语法命名行只是空间, 当你使用这种语法时, 空间两端的行实际上是自动命名的,如果你的网格空间名字是foo,那么这个空间的起始行和起始列的名字就是foo-start,最后一列和最后一行就是foo-end;

grid-template

一个简短设置 grid-template-rows , grid-template-columnsgrid-template-areas 在一起的声明

.container {
  grid-template: none | subgrid | <grid-template-rows> <grid-area-name>/ <grid-template-columns>;
}

由于 grid-template 不会重置隐式网格属性( grid-auto-columns , grid-auto-rows , grid-auto-flow ),这可能是您在大多数情况下所要做的,所以建议使用 grid 属而不是 grid-template

grid-column-gap grid-row-gap

指定网格线的大小 值:

: 长度值

.container{
  grid-column-gap: <line-size>;
  grid-row-gap: <line-size>;
}
.container{
  display: grid;
  grid-template-columns: repeat(4, 50px);
  grid-template-rows: repeat(4, 80px);
  grid-column-gap: 10px;
  grid-row-gap: 15px;
}

CSS Gird布局教程指南 

grid-gap

一种速记 grid-row-gapgrid-column-gap 值:

: 长度值

.container {
  grid-gap: <grid-row-gap><grid-column-gap>
}

justify-items

沿着行轴对齐网格内的内容(而不是 align-items 沿着列轴对齐),适用于所有网格容器内的网格项目 值:

  1. start: 将内容对齐到网格区域的左端
  2. end: 将内容对齐到网格区域的右端
  3. center: 将网格区域中心的内容对齐
  4. stretch: 填充网格区域的整个宽度
.container{
  justify-items: start | end | center | stretch
}

例子

.container{
  justify-items: start;
}

CSS Gird布局教程指南 

.container{
  justify-items: end;
}

CSS Gird布局教程指南

.container{
  justify-items: center;
}

CSS Gird布局教程指南

.container{
  justify-items: stretch;
}

CSS Gird布局教程指南

此行为也可以通过 justify-self 在个别网格项目上设置

align-items

沿列轴对齐网格的内容(而不是 justify-items 沿着行轴对齐)。该值适用于容器内的所有网格项目 值:

  1. start: 将内容对齐到网格空间的顶部
  2. end: 将内容对齐到网格空间的底部
  3. center: 将内容对齐到网格空间的中心
  4. stretch: 填充网格空间的整个高度
.container {
  align-items: start | end | center | stretch;
}

例子

.container {
  align-items: start;
}

CSS Gird布局教程指南

.container {
  align-items: end;
}

CSS Gird布局教程指南

.container {
  align-items: center;
}

CSS Gird布局教程指南

.container {
  align-items: stretch;
}

CSS Gird布局教程指南 

此行为也可以通过 align-self

属性在个别网格项目上设置

justify-content

有时,网格的总大小可能小于其网格容器的大小, 如果您的所有网格项目都是用非灵活单位进行大小调整,就可能发生这种情况。这时候可以设置网格容器内的网格的对齐方式,此属性沿着行轴对齐网络 值:

  1. start: 将网格对齐到网格容器的左端
  2. end: 将网格对齐到网格容器的右端
  3. center: 将网格对齐到网格容器的中心
  4. stretch: 调整网格的大小以允许网格填充网格容器的整个宽度
  5. space-around: 在每个网格项目之间分配一个均匀的空间,在两个端分配一半的空间
  6. space-between: 在每个网格项目之间分配一个均匀的空间,在两个端没有分配空间
  7. space-evenly:在每个网格项目之间分配一个均匀的空间,包括两个远端 例子
.container{
  justify-content: start;
}

CSS Gird布局教程指南

.container{
  justify-content: end;
}

CSS Gird布局教程指南

.container{
  justify-content: center;
}

CSS Gird布局教程指南

.container{
  justify-content: stretch
}

CSS Gird布局教程指南 

.container{
  justify-content: space-around;
}

CSS Gird布局教程指南

.container{
  justify-content: space-between;
}

CSS Gird布局教程指南

.container{
  justify-content: space-evenly;
}

CSS Gird布局教程指南 

align-content

此属性和 justify-content 一样,只不过是沿着列轴对齐网格 值:

  1. start: 将网格对齐到网格容器的顶部
  2. end: 将网格对齐到网格容器的底部
  3. cneter: 将网格对齐到网格容器的中心
  4. stretch: 调整网格项目的大小, 以允许网格项目填充网格容器的整个高度
  5. space-around: 在每个网格项目之间分配均匀的空间,在两端分配一半的空间
  6. sapce-between: 在每个网格项目之间分配一个均匀的空间,在两端没有空间
  7. space-evenly: 在每个项目之间分配一个均匀的空间, 包括两端 例子:
.container{
  align-content: start;
}

CSS Gird布局教程指南

.container{
  align-content: end
}

CSS Gird布局教程指南

.container{
  align-content: center;
}

CSS Gird布局教程指南

.container{
  align-content: stretch;
}

CSS Gird布局教程指南

.container{
  align-content: space-around;
}

CSS Gird布局教程指南

.container{
  align-content: space-between;
}

CSS Gird布局教程指南

.container{
  align-content: space-evenly;
}

CSS Gird布局教程指南 

grid-auto-columns grid-auto-rows

指定任何自动生成的网格轨道的大小,当你明确声明超出定义的网格空间的行或列(通过grid-template-rows / grid-template-columns)时间,会创建隐式网格轨道 值:

: 可以长度, 百分比, 或分数(使用 fr 单位) 如何创建隐式网格轨道, 例子:

.contaienr{
  display: grid;
  grid-template-columns: repeat(2, 60px);
  grid-template-rows: repeat(2, 90px);
}

这样会创建一个2 X 2的网格

CSS Gird布局教程指南

但现在如果你使用 grid-columngrid-row 定位你的网格项目是这样的

.item-a {
  grid-column: 1 / 2;
  grid-row: 2 / 3;
}
.item-b {
  grid-column: 5 / 6;
  grid-row: 2 / 3;
}

CSS Gird布局教程指南

我们告诉 item-b 从第5行开始, 到第6行结束, 但是我们没有定义第5行或第6行, 因为我们引用了不存在的行,所以创建了宽度为0的隐式轨道来填补空白,我们可以使用 grid-auto-columnsgrid-auto-rows 来指定这些隐式轨道的宽度

.container{
  grid-auto-columns: 60px;
}

CSS Gird布局教程指南

 grid-auto-flow

如果您没有明确放置在网格上的网格项目,则自动分配算法会自动分配这些项目。该属性控制自动分配算法的原理 值:

  1. column: 告诉自动分配算法依次填充每行,根据需要添加新行
  2. row: 告诉自动分配算法一次填充每列,根据需要添加新列
  3. dense: 告诉自动分配算法,如果之后出现较小的项目,则尝试在网格中尽早填充空间
  4. dense 可能导致您的项目出现乱序 例子:
<section class="container">
  <div class="item-a">item-a</div>
  <div class="item-b">item-b</div>
  <div class="item-c">item-c</div>
  <div class="item-d">item-d</div>
  <div class="item-e">item-e</div>
</section>

你定义了一个五行两列的网格,并设置 grid-auto-flowrow

.container{
  display: grid;
  grid-template-columns: repeat(5, 60px);
  grid-template-rows: repeat(2, 30px);
  grid-auto-flow: row;
}

将项目分配在网格容器上,只能为其中的两个项目分配空间

.item-a {
  grid-column: 1;
  grid-row: 1 / 3;
}
.item-e {
  grid-column: 5;
  grid-row: 1 / 3;
}

CSS Gird布局教程指南

如果将 grid-auto-flow 设置为 column

CSS Gird布局教程指南 

grid

简写为所有设置下列属性的单一声明: grid-template-rows , grid-template-columns , grid-template-areas , grid-auto-rows , grid-auto-columnsgrid-flow

网格项目的属性

grid-column-start, grid-column-end, grid-row-start,grid-row-end

通过引用特定的网格线来确定网格内项目的位置。 值:

  1. : 可以是一个数字来引用一个编号的网格线,或者一个名称来引用一个命名的网格线
  2. span : 项目将跨越提供的网格轨道数量
  3. span : 项目将跨越, 直到与它提供的名称命中
  4. auto: 自动分配
.item-a {
  grid-column-start: 2;
  grid-column-end: five;
  grid-row-start: row1-start
  grid-row-end: 3
}

CSS Gird布局教程指南

.item-b {
  grid-column-start: 1;
  grid-column-end: span col4-start;
  grid-row-start: 2
  grid-row-end: span 2
}

CSS Gird布局教程指南

如果没有 grid-column-end / grid-row-end 声明, 该项目将默认跨越一个项目,项目可以相互重叠,您可以使用 z-index 来控制堆叠顺序

grid-column, grid-row

简写为 grid-column-start + grid-column-endgrid-row-start + grid-row-end 值:

.item-c {
  grid-column: 3 / span 2;
  grid-row: third-line / 4;
}

CSS Gird布局教程指南 

grid-area

为项目提供一个名称,以便可以通过使用 grid-template-areas 属性创建的模板来引用他。或者属性可以用作 grid-row-start + grid-column-start + grid-row-end + grid-column-end 值:

  1. : 你选择的名称
  2. / / / :可以是数字或命名行
.item {
  grid-area:  <name> | <row-start> / <column-start> / <row-end> / <column-end>;
}

例子: 作为项目分配名称的一种方法

.item-d{
  grid-area: header;
}

作为 grid-row-start + grid-column-start + grid-row-end + grid-column-end 的简写:

.item-d {
  grid-area: 1 / col4-start / last-line / 6
}

CSS Gird布局教程指南 

justify-self

沿着行轴对齐网格的内容,此属性适用与单个网格项目的内容 值:

  1. start: 将内容对齐到网格空间的左端
  2. end: 将内容对齐到网格空间的右端
  3. center: 将网格空间中心的内容对齐
  4. stretch: 填充网格空间的整个宽度
.item {
  justify-self: start | end | center | stretch;
}

例子:

.item-a {
  justify-self: start;
}

CSS Gird布局教程指南

.item-a {
  justify-self: end;
}

CSS Gird布局教程指南

.item-a {
  justify-self: center;
}

CSS Gird布局教程指南 

.item-a {
  justify-self: stretch;
}

CSS Gird布局教程指南

 align-self

沿列轴对齐网格内的内容,此值适用与单个网格项目内的内容 值

start: 将内容对齐到网格空间的顶部

end: 将内容对齐到网格空间的底部

center: 将网格空间中心的内容对齐

stretch: 填充网格空间的整个高度

.item {
  align-self: start | end | center | stretch;
}

例子:

.item-a {
  align-self: start;
}

CSS Gird布局教程指南 

.item-a {
  align-self: end;
}

CSS Gird布局教程指南

.item-a {
  align-self: center;
}

CSS Gird布局教程指南

.item-a {
  align-self: stretch;
}

CSS Gird布局教程指南 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

    您感兴趣的教程

    在docker中安装mysql详解

    本篇文章主要介绍了在docker中安装mysql详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编...

    详解 安装 docker mysql

    win10中文输入法仅在桌面显示怎么办?

    win10中文输入法仅在桌面显示怎么办?

    win10系统使用搜狗,QQ输入法只有在显示桌面的时候才出来,在使用其他程序输入框里面却只能输入字母数字,win10中...

    win10 中文输入法

    一分钟掌握linux系统目录结构

    这篇文章主要介绍了linux系统目录结构,通过结构图和多张表格了解linux系统目录结构,感兴趣的小伙伴们可以参考一...

    结构 目录 系统 linux

    PHP程序员玩转Linux系列 Linux和Windows安装

    这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,Linux和Windows安装nginx教程,具有一定的参考价值,感兴趣...

    玩转 程序员 安装 系列 PHP

    win10怎么安装杜比音效Doby V4.1 win10安装杜

    第四代杜比®家庭影院®技术包含了一整套协同工作的技术,让PC 发出清晰的环绕声同时第四代杜比家庭影院技术...

    win10杜比音效

    纯CSS实现iOS风格打开关闭选择框功能

    这篇文章主要介绍了纯CSS实现iOS风格打开关闭选择框,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作...

    css ios c

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的办法

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的

    Win7给电脑C盘扩容的办法大家知道吗?当系统分区C盘空间不足时,就需要给它扩容了,如果不管,C盘没有足够的空间...

    Win7 C盘 扩容

    百度推广竞品词的投放策略

    SEM是基于关键词搜索的营销活动。作为推广人员,我们所做的工作,就是打理成千上万的关键词,关注它们的质量度...

    百度推广 竞品词

    Visual Studio Code(vscode) git的使用教程

    这篇文章主要介绍了详解Visual Studio Code(vscode) git的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。...

    教程 Studio Visual Code git

    七牛云储存创始人分享七牛的创立故事与

    这篇文章主要介绍了七牛云储存创始人分享七牛的创立故事与对Go语言的应用,七牛选用Go语言这门新兴的编程语言进行...

    七牛 Go语言

    Win10预览版Mobile 10547即将发布 9月19日上午

    微软副总裁Gabriel Aul的Twitter透露了 Win10 Mobile预览版10536即将发布,他表示该版本已进入内部慢速版阶段,发布时间目...

    Win10 预览版

    HTML标签meta总结,HTML5 head meta 属性整理

    移动前端开发中添加一些webkit专属的HTML5头部标签,帮助浏览器更好解析HTML代码,更好地将移动web前端页面表现出来...

    移动端html5模拟长按事件的实现方法

    这篇文章主要介绍了移动端html5模拟长按事件的实现方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家...

    移动端 html5 长按

    HTML常用meta大全(推荐)

    这篇文章主要介绍了HTML常用meta大全(推荐),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...

    cdr怎么把图片转换成位图? cdr图片转换为位图的教程

    cdr怎么把图片转换成位图? cdr图片转换为

    cdr怎么把图片转换成位图?cdr中插入的图片想要转换成位图,该怎么转换呢?下面我们就来看看cdr图片转换为位图的...

    cdr 图片 位图

    win10系统怎么录屏?win10系统自带录屏详细教程

    win10系统怎么录屏?win10系统自带录屏详细

    当我们是使用win10系统的时候,想要录制电脑上的画面,这时候有人会想到下个第三方软件,其实可以用电脑上的自带...

    win10 系统自带录屏 详细教程

    + 更多教程 +
    教程标签
    HTMLCSSDreamweaverFrontpage