Title/ CSS Grid 布局(Grid Layout)完全指南 #flight.Archives003

序 :

写完这篇文章后,我准备一直做下去了,包括flight的各个分区,也看到前方的路.

我要做最简约高效的前端教程 //表达最张狂的性格

简介(from Ruanyf) :

2017三月,主流浏览器更新了对Grid(网格布局)的支持.

这是最强大的 CSS 布局方案.

它将网页划分成一个个网格,做出各种各样的布局. 以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了.

Tag/Grid布局介绍

  1. .container{
  2. display:grid; /*or inline-grid*/
  3. }

这段代码定义了.container元素为Grid容器,.container的直接子元素为Grid项目

其中网格的分界线称作Grid Line,两条相邻网格线之间的间隔称作Grid Track.

单个格子称作Grid Cell,多条网格线包围的区块称作Grid Area

Tag/Grid容器(Grid Container)属性

属性 可取值 作用
display grid, inline-grid 指定一个块状/行内Grid容器
grid-template-columns, grid-template-rows 多个值, [line-name] <track-size>...(网格线的名称,间隔的宽度) 指定每个行/列的名称和大小, 详见Details
grid-template-areas 多个值, <grid-area-name>(区块的名称) 或 .(空的区块) 指定每一个区块的名称, 详见Details
grid-template <grid-template-rows> <grid-template-columns> 对于 <grid-template-rows>, <grid-template-columns><grid-template-areas>的CSS简写属性
column-gap(前grid-column-gap),row-gap(前grid-row-gap) <line-size>(网格线的宽度) 指定行/列的间距
gap(前grid-gap) <grid-row-gap> <grid-column-gap> 对于 row-gapcolumn-gap的CSS简写属性
align-items, justify-items start,end,center,stretch(默认值) align-items指定项目的行对齐方式, justify-items指定项目的列对齐方式
place-items <align-items> <justify-items> CSS简写属性, 如果只有一个值则同时指定两个属性
justify-content,align-content start, end, center, stretch, space-around, space-between, space-evenly justify-content指定项目在容器中的水平位置, align-content指定项目在容器中的垂直位置
place-content <align-content> <justify-content> CSS简写属性, 如果只有一个值则同时指定两个属性
grid-auto-columns, grid-auto-rows 多个值, <track-size> 指定在有多余区块时浏览器自动创建的多余网格的列宽和行高
grid-auto-flow row, column, row dense, column dense 指定项目的放置顺序,默认是 row 即"先行后列"
grid <grid-template>, <'grid-template-rows'> [ auto-flow && dense? ] <'grid-auto-columns'>, [ auto-flow && dense? ] <'grid-auto-rows'>? <'grid-template-columns'> grid-template-rows, grid-template-columns, grid-template-areas, grid-auto-rows, grid-auto-columnsgrid-auto-flow的CSS简写属性, 详见Details

Tag/Grid项目(Grid item)属性

属性 可取值 作用
grid-column-start, grid-column-end, grid-row-start, grid-row-end <line>, span <number>, span <name> 指定项目所占的Grid Area, 详见Details
grid-column, grid-row <start-line> / <end-line> grid-columngrid-column-startgrid-column-end的CSS简写属性, grid-rowgrid-row-startgrid-row-end的CSS简写属性
grid-area <name>, <row-start> / <column-start> / <row-end> / <column-end> 指定项目所在区域
justify-self,align-self start,end,center,stretch justify-self指定项目在区块中的水平位置, align-self指定项目在区块中的垂直位置,
place-self auto(默认值), <align-self> <justify-self> <align-self>, <justify-self> 的CSS简写属性, 如果只有一个值则同时指定两个属性

->> Details

容器属性 - grid-template-columns, grid-template-rows

可取值:

  1. grid-template-columns: 100px 1fr; /*区块的大小*/
  2. grid-template-columns: [linename] 100px; /*方括号内可以定义网格线的名称, 方便以后引用*/
  3. grid-template-columns: [linenameA linenameB] 100px; /*一条线可以有多个名字*/
  4. grid-template-columns: [linenameA linenameB]; /*可以只定义名称,不定义大小*/

特殊内容介绍:

  1. repeat() 函数

    CSS函数 repeat(times, value) 可以简化重复值输入的繁琐

    1. .container {
    2. display: grid;
    3. grid-template-columns: repeat(4, 25%); /*等同于 grid-template-columns: 25% 25% 25% 25%;*/
    4. grid-template-rows: repeat(2, 50px 100px 80px); /*等同于 grid-template-columns: 50px 100px 80px 50px 100px 80px;*/
    5. }

    特殊说明:

    times 参数接受 auto-fillauto-fit 关键字, 适用于容器大小不固定的情况

    1. grid-template-columns: repeat(auto-fill, 100px) /*在一行内不断放置100px的项目直到填满该行*/
  2. 长度单位 fr

    "fr" 是 "fraction"("片段") 的缩写, 可以用于指定宽度比例

    1. .container {
    2. display:grid;
    3. grid-template-columns: 200px 1fr 2fr;
    4. }

    fr 单位可以和绝对单位一起使用, 上面代码指定了第一行200px, 第二行宽度是第三行的一半

  3. 用于控制大小的关键字

    • min-content 分配最小宽度
    • max-content 分配最大宽度
    • fit-content 分配的宽度在 min-contentmax-content 之间
    • auto 自动分配宽度
  4. 用于控制大小的函数

    minmax(min,max) 接受两个参数, 表示一个长度范围, 表示宽度不小于 min 不超过 max.

    如果只定义其一, 可以使用 min()max() 函数

容器属性 - grid-template-areas

可取值:

  1. /*<string>+*/
  2. grid-template-areas:
  3. "a a a"
  4. "b c c"; /*划分出6个区块, 然后将其命名为 `a`, `b` 和 `c` 的3个区域*/
  5. grid-template-areas:
  6. "a a ."
  7. "b c c"; /* . 可以将某个区块指定为空*/

项目属性 - grid

可取值:

  1. /*<'grid-template'> (grid-template-columns 和 grid-template-rows) */
  2. grid: "a" 100px "b" 1fr;
  3. grid: [linename1] "a" 100px [linename2];
  4. grid: "a" 200px "b" min-content;
  5. grid: "a" minmax(100px, max-content) "b" 20%;
  6. /* <'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'> */
  7. grid: 200px / auto-flow;
  8. grid: 30% / auto-flow dense;
  9. grid: repeat(3, [line1 line2 line3] 200px) / auto-flow 300px;
  10. grid: [line1] minmax(20em, max-content) / auto-flow dense 40%;
  11. /* [ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>*/
  12. grid: auto-flow / 200px;
  13. grid: auto-flow dense / 30%;
  14. grid: auto-flow 300px / repeat(3, [line1 line2 line3] 200px);
  15. grid: auto-flow dense 40% / [line1] minmax(20em, max-content);

这个属性对代码的易读性存在负面影响QwQ...

->> Reference link

MDN中文文档 https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Grid_Layout

MDN 英文文档 https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout

CodingStartUp https://www.bilibili.com/video/BV1XE41177oN?from=search&seid=7045917601727025410

CSS-Tricks https://css-tricks.com/snippets/css/complete-guide-grid/

关于 auto-fillauto-fit 属性的对比 https://css-tricks.com/auto-sizing-columns-css-grid-auto-fill-vs-auto-fit/

Scotch.io#1 https://scotch.io/tutorials/deep-dive-into-css-grid-2

Scotch.io#2 https://scotch.io/tutorials/getting-started-with-css-grid-layout

->> Version History

现在版本为V1.0

详见 Github(@flightmakers)

2021.8.13 在jj发布V1.0

2021.8.14 奋(mo)战(yu)了两天!!! 这篇文章终于发布了QwQ!!!

CSS Grid 布局(Grid Layout)完全指南 #flight.Archives003的更多相关文章

  1. 全新的css网站布局--Grid布局

    Grid布局全新的css网站布局 CSS Grid 布局由两个核心组成部分是 wrapper(父元素)和 items(子元素). wrapper 是实际的 grid(网格),items 是 grid( ...

  2. CSS Grid布局入门

    相信大家都比较熟悉flex布局了,最近有空研究了波grid布局,感觉虽然兼容性还不是太高,应用不是太普遍,但是功能非常强大.未来应该是grid+flex为主流,grid是二维布局,很灵活,适合整体构架 ...

  3. CSS Grid布局指南

    简介 CSS Grid布局 (又名"网格"),是一个基于二维网格布局的系统,主要目的是改变我们基于网格设计的用户接口方式.如我们所知,CSS 总是用于网页的样式设置,但它并没有起到 ...

  4. CSS Grid 布局完全指南(图解 Grid 详细教程)

    CSS Grid 布局是 CSS 中最强大的布局系统.与 flexbox 的一维布局系统不同,CSS Grid 布局是一个二维布局系统,也就意味着它可以同时处理列和行.通过将 CSS 规则应用于 父元 ...

  5. css:display:grid布局

    简介 CSS Grid布局 (又名"网格"),是一个基于二维网格布局的系统,主要目的是改变我们基于网格设计的用户接口方式.如我们所知,CSS 总是用于网页的样式设置,但它并没有起到 ...

  6. 快速使用CSS Grid布局,实现响应式设计

    常用Grid布局属性介绍 下面从一个简单Grid布局例子说起. CSS Grid 布局由两个核心组成部分是 wrapper(父元素)和 items(子元素). wrapper 是实际的 grid(网格 ...

  7. Grid布局指南

    简介 CSS网格布局(又称“网格”),是一种二维网格布局系统.CSS在处理网页布局方面一直做的不是很好.一开始我们用的是table(表格)布局,然后用float(浮动),position(定位)和in ...

  8. CSS Grid 布局

    CSS Grid 布局是 CSS 中最强大的布局系统.与 flexbox 的一维布局系统不同,CSS Grid 布局是一个二维布局系统,也就意味着它可以同时处理列和行.通过将 CSS 规则应用于 父元 ...

  9. css 中的grid布局基础

    CSS Grid Layout为CSS引入了一个二维网格系统.网格可用于布局主要页面区域或小型用户界面元素. 网格是一组交叉的水平和垂直线 - 一组定义列,其他行.元素可以放在网格上,以行或者列为标准 ...

随机推荐

  1. 3、mysql的多实例配置(3)

    8.mysql多实例故障排错:

  2. ps2020 将图片中的字清除 并且不损坏背景图

    步骤:1:使用选框工具选中要删除的字:2:选择-->色彩范围,选中字体颜色  :3.选择-->修改-->扩展:4.图片区域,右键填充--内容识别--确定: 1.使用选框工具选中要删除 ...

  3. Linux搭建私有yum源

    一.前期准备 环境:CentOS 8.3 镜像: CentOS-7-x86_64-Everything-2009.iso CentOS-8.3.2011-x86_64-dvd1.iso 二.搭建步骤 ...

  4. hadoop学习(二)hadoop集群的启动

    一.完全分布式集群环境的搭建 1.配置hosts文件:将三台集群服务器的主机名与IP的对应关系互相配置到对方的hosts文件中,以便对方服务器能通过主机名寻找IP,hosts文件在/etc目录下. 2 ...

  5. 从三道题目入门frida

    偶然从看雪看到了一篇入门frida的题目,正好苦于没练手的东西,直接上手一波 1.第一题jadx打开,也没有壳和混淆,整体非常清晰,判断的逻辑也很简单 发现其实就是两个输入框,一个用户名一个密码,先拼 ...

  6. python 常见面试问题

    https://blog.csdn.net/weixin_43789195/article/details/87469096 https://blog.csdn.net/qq_42642945/art ...

  7. Jenkins+Sonar 项目构建前代码审查

    一.sonar简介 1.概述 Sonar (SonarQube)是一个开源平台,用于持续检查代码质量,不只是一个质量数据报告工具,更是代码质量管理平台. 支持Java, C#, C/C++, PL/S ...

  8. 7.Java数组

    一.数组概念(最简单的数据结构) 数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成. 其中每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问 ...

  9. python 爬取网络小说 清洗 并下载至txt文件

    什么是爬虫 网络爬虫,也叫网络蜘蛛(spider),是一种用来自动浏览万维网的网络机器人.其目的一般为编纂网络索引. 网络搜索引擎等站点通过爬虫软件更新自身的网站内容或其对其他网站的索引.网络爬虫可以 ...

  10. Postman进行webservices接口测试

    1.接口地址 webservices是什么? 更多webservices接口地址访问地址:http://www.webxml.com.cn/zh_cn/web_services.aspx webser ...