CSS网格布局(Grid)教程

一、概述

CSS网格布局(Grid)是一套二维的页面布局系统,它的出现将完全颠覆页面布局的传统方式。

首先来介绍几个概念:

想象一个三行三列的布局,网格线就是构成网格所有的线条,三行三列的布局每行就会有4条网格线。
网格轨道就是相邻两条平行的网格线之间的部分。

和flex布局一样,他会有父容器和子项目,在这儿我们称为网格容器和网格项。
接下来,我们从网格容器到网格项的各个基本属性来介绍网格布局。

二、 网格容器

将属性 display 值设为 grid 或 inline-grid 就创建了一个网格容器,所有容器直接子结点自动成为网格项目。

例1:

网格项目按行排列,网格项目占用整个容器的宽度。

例2:

网格项目按行排列,网格项目宽度由自身宽度决定。

三、显示网格

属性grid-template-rows和grid-template-columns

容器指定了网格布局以后,接着就要划分行和列。grid-template-columns属性定义每一列的列宽,grid-template-rows属性定义每一行的行高。

例3:

网格项目1的行高是50px,网格项目2的行高是100px。

因为只定义了两个行高,网格项目3和4的行高取决于其本身的高度。

例4:

类似于行的定义,属性grid-template-columns用于定义列的尺寸。

因为定义中只有三列,所以项目4,5,6排在新的一行; 并因为它们位于第1,2,3列的轨道上,所以其宽度等于定义中第1,2,3列轨道的宽度。

网格项目的第1列,第2列,第3列的宽度分别是 90px, 50px 和 120px 。

四、网格项目跨越行列

网格项目默认都占用一行和一列,但可以使用前一节中定位项目的属性来指定项目跨越多行或多列。

例5:

通过grid-column-start和grid-column-end属性值的设置,使该网格项目跨越多列。

五、justify-content 属性,align-content 属性

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

这两个属性的写法完全相同,都可以取下面这些值。(下面的图都以justify-content属性为例,align-content属性的图完全一样,只是将水平方向改成垂直方向。)

start - 对齐容器的起始边框。

end - 对齐容器的结束边框。

center - 容器内部居中。

stretch - 项目大小没有指定时,拉伸占据整个网格容器。

space-around - 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与容器边框的间隔大一倍。

space-between - 项目与项目的间隔相等,项目与容器边框之间没有间隔。

space-evenly - 项目与项目的间隔相等,项目与容器边框之间也是同样长度的间隔。

六、grid-auto-columns 属性,grid-auto-rows 属性

有时候,一些项目的指定位置,在现有网格的外部。比如网格只有3列,但是某一个项目指定在第5行。这时,浏览器会自动生成多余的网格,以便放置项目。

grid-auto-columns属性和grid-auto-rows属性用来设置,浏览器自动创建的多余网格的列宽和行高。它们的写法与grid-template-columns和grid-template-rows完全相同。如果不指定这两个属性,浏览器完全根据单元格内容的大小,决定新增网格的列宽和行高。

希望我的文章能够对您有所帮助。

原文地址:https://blog.51cto.com/14322378/2401834

时间: 2024-11-06 03:54:24

CSS网格布局(Grid)教程的相关文章

网格布局 grid(1)

目录 网格布局 grid(1) 实现方式 对容器设置的属性 行高与列宽的设置 单元格的间距 内容的位置 表格在容器的位置 兼容问题 网格布局 grid(1) 实现方式 display:grid 也可成为行内元素 display:inline-grid tip:设为网格布局以后,容器内的子元素的 float . display:inline-block/table-cell , vertical-align 和 column-*等 各项设置属性都将失效 对容器设置的属性 行高与列宽的设置 grid

CSS多列布局Multi-column、伸缩布局Flexbox、网格布局Grid详解

新css属性为我们提供了更加便捷的网页布局方式.来自微软的thomas lewis将带你认识去Grid Alignment,Flexibox Box以及Multi-column Layout这三大领域. 这篇文章最早出现在the April 2012 issue (226)这期的.net杂志上-这杂志是面向网页设计者以及开发者,全球销量最高的杂志. 按照以往来说,用CSS来布局看起来总是一样非常繁杂的工作.然而,随着一个个新标准的推出,网页设计者已经能够实现非常轻松地进行布局工作了. 主流的浏览

css 网格布局

一.概述 网格布局(Grid)是最强大的 CSS 布局方案. 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局.以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了. 上图这样的布局,就是 Grid 布局的拿手好戏. Grid 布局与 Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置.但是,它们也存在重大区别. Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局.Grid 布局则是将容器划分成"行"

CSS3 网格布局(grid layout)基础知识 - 隐式网格自动布局(grid-auto-rows/grid-auto-columns/grid-auto-flow)

网格模板(grid-template)属性及其普通写法(longhands)定义了一个固定数量的轨道,构成显式网格. 当网格项目定位在这些界限之外,网格容器通过增加隐式网格线生成隐式网格轨道. 这些隐含的和显式的网格线一起构成隐式网格(implicit grid). 隐式网格轨道的尺寸由网格自动行(grid-auto-rows)和网格自动列(grid-auto-columns)属性来确定. 网格自动流(grid-auto-flow)属性用来控制无明确位置的网格项的自动定位(auto-placem

网格布局 grid

推荐阅读:http://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html 1. 启动网格布局 div { display: grid; } 启动后,子元素的float.display: inline-block.display: table-cell.vertical-align和column-*等设置都将失效 2. 行列高度 div { display: grid; grid-template-columns: 50px 100

这可能是史上最全的CSS自适应布局总结教程

前言 标题严格遵守了新广告法,你再不爽,我也没犯法呀!话不多说,上干货! 所谓布局,其实包含两个含义:尺寸与定位.也就是说,所有的布局方案,本质上都是尺寸与定位的结合. 大体上,布局中会用到的有:尺寸相关的盒子模型,普通流.浮动.绝对定位三种定位机制,CSS3中的transform.弹性盒子模块.试验中的grid模块.逛园子的时候经常可以看到浮动布局,inline-block布局,弹性盒布局这几个名词.现在对布局也算有一点了解,做个总结巩固一下.如果你也看了很多资料,但是实际动手时对布局还是无从

css网格布局

先来一段基本布局 <!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <style> .container { display: grid; grid-template-columns: 100px 100px 100px;// 三个100px分别是第一列.第二列.第三列div的宽度 grid-templat

CSS Grid 网格布局教程

一.概述 网格布局(Grid)是最强大的 CSS 布局方案. 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局.以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了. 上图这样的布局,就是 Grid 布局的拿手好戏. Grid 布局与 Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置.但是,它们也存在重大区别. Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局.Grid 布局则是将容器划分成"行"

88.CSS---Grid 网格布局教程

grid 兼容性查看请点此处 最新Grid兼容 grid 布局就是给父元素(容器)添加display:grid,然后使子元素(项目)改变布局, 1 2 3 4 5 6 7 8 9 上面九个正方形的代码如下:没有给正方形设定宽度,是为了方便观察css效果 .seven{ background:#f1c40f; line-height:100px; color:#fff; font-size: 40px; text-align: center; } 1.grid-template-columns 属