栅格系统

  • 如何设置栅格容器
  • 如何绘制栅格
    • 固定绘制栅格结构
    • 重复绘制栅格结构
    • 自动填充与按比例划分栅格
  • 如何在栅格中放置元素
    • 根据栅格编号放置元素
    • 栅格固定命名放置元素
    • 重复栅格的命名技巧
    • 根据偏移量部署元素
    • 元素定位简写操作
    • 使用区域定位的方式
  • 栅格样式的处理
    • 栅格排布方式
    • 栅格整体对齐方式处理
    • 栅格内元素的整体控制
    • 栅格内元素的独立控制
  • 设置栅格间距

如何设置栅格容器

  • 把元素的display赋值 grid 或 inline-grid ,便能把元素变成容器。
<style>main {width: 200px;height: 200px;background-color: rosybrown;display: grid;grid-template-rows: 100px 100px;grid-template-columns: 100px 100px;}</style>

在这里,main 元素被设置成了栅格容器,如下图所示。图中虚线称为栅格线,栅格线围成的单元格称为栅格。

如何绘制栅格

固定绘制栅格结构

  • grid-template-rows 绘制栅格行
  • grid-template-columns 绘制栅格列

已知 宽高为 200px*200px的栅格容器main。想在容器中绘制 4 个的栅格。

<style>main {width: 200px;height: 200px;background-color: rosybrown;display: grid;grid-template-columns: 50px 50px 50px 50px;}</style>

4 个50px*200px的栅格 【只绘制了列栅格线】

<style>main {width: 200px;height: 200px;background-color: rosybrown;display: grid;grid-template-rows: 50px 50px;grid-template-columns: 50px 50px;}</style>

4个50px*50px的栅格 【同时绘制了行栅格线和列栅格线】

Note:
     1,grid-template-rows和grid-template-columns分别是绘制行栅格线和列栅格线的。参数的个数就代表绘制的行数和列数,参数值得大小就代表栅格的高和宽。
      2,grid-template-rows和grid-template-columns的值除了可以写成像素值外还可以写成百分比。【写成百分比时的参照物是栅格容器,在这里的例子中也就是main元素】
例:对于4个50px*50px的栅格来说,代码还可以是grid-template-rows: 25% 25%; grid-template-columns: 25% 25%;

重复绘制栅格结构

  • grid-template-rows:repeat() 重复绘制行栅格线
  • grid-template-columns:repeat() 重复绘制列栅格线

repeat()函数的参数形式:
     1,repeat(1,50px) 第一个参数是重复的次数即1次,第二个参数是绘制行(或列)的高度(或宽度)即50px。
     2,repeat(2,50px 100px) 第一个参数是重复的次数即2次,第二个参数是绘制行(或列)的高度(或宽度)即一个为 50px 一个为100px。【第二个参数的个数可以是多个,参数的个数代表要绘制的行栅格线或列栅格线的个数,参数的值代表行栅格线的高度或列栅格线的宽度】
Note: 第二个参数值除了是像素还可以是百分比的形式。

<style>
main {width: 200px;height: 200px;background-color: rosybrown;display: grid;grid-template-rows: repeat(2,20px 50px);grid-template-columns: repeat(2,20px 50px);}
</style>

下图显示结果:表示行栅格线和列栅格线都绘制了两次,每一次都绘制了两行两列。

自动填充与按比例划分栅格

已知容器的宽高 例:300px*300px

自动填充栅格

  • grid-template-rows:repeat(auto-fill,100px)
  • grid-template-columns:repeat(auto-fill,100px)

代码分析:自动填充栅格,每100px为一份

按比例划分栅格

  • grid-template-rows: 1fr 2fr 3fr;
  • grid-template-columns:1fr 2fr 3fr;

注意:1fr 类似于弹性盒模型中的 flex:1;

如何在栅格中放置元素

根据栅格编号放置元素

在这里我们需要知道,对于栅格线,浏览器在他们刚被绘制出来的时候对他们进行编号。如下所示:
对于行栅格线来说,从上到下进行的编号是正数,从下到上进行的编号是负数。
对于列栅格线来说,从左到右进行的编号是正数,从右到左进行的编号是负数。

  • grid-row-start 元素放置栅格的行起始编号
  • grid-row-end 元素放置栅格的行结束编号
  • grid-column-start 元素放置栅格的列起始编号
  • grid-column-end 元素放置栅格的列结束编号

例:把div放置在右下角的栅格中,可以写成:

<style>main {width: 200px;height: 200px;background-color: rosybrown;margin: 100px auto;display: grid;grid-template-rows: repeat(2,20px 50px);grid-template-columns: repeat(2,20px 50px);}main div {background-color: royalblue;grid-row-start: 4;grid-column-start: 4;grid-row-end: 5;grid-column-end: 5;}</style><main><div></div></main>

结果:

还可以改写为:grid-row-start: -1; grid-column-start: -1; grid-row-end: -2; grid-column-end: -2;

栅格固定命名放置元素

  • grid-template-rows:[r1-s] 100px [r1-e r2-s] 100px [r2-e r3-s] 100px [r3-e];
  • grid-template-columns:[c1-s] 100px [c1-e c2-s] 100px [c2-e c3-s] 100px [c3-e];

格式说明:
第一条行栅格线的名字为 r1-s 第二条行栅格线的名字为r1-e/r2-s,以此类推。
第一条列栅格线的名字为 c1-s 第二条列栅格线的名字为c1-e/c2-s,以此类推。

效果演示:

<style>main {width: 300px;height: 300px;background-color: rosybrown;margin: 100px auto;display: grid;grid-template-rows: [r1-s] 100px [r1-e r2-s] 100px [r2-e r3-s] 100px [r3-e];grid-template-columns: [c1-s] 100px [c1-e c2-s] 100px [c2-e c3-s] 100px [c3-e];}main div {background-color: royalblue;grid-row-start: r2-s;grid-column-start: c2-s;grid-row-end: r2-e;grid-column-end: c2-e;}</style><main><div></div></main>

重复栅格的命名技巧

  • grid-template-rows:repeat(3,[r-s] 1fr [r-e]);
  • grid-template-columns:repeat(3,[c-s] 1fr [c-e]);

代码解释:
第一条行栅格线的名字是 r-s 1,第二条行栅格线的名字是 r-s 2/r-e 1 以此类推。
第一天列栅格线的名字是c-s 1,第二条列栅格线的名字是c-s 2/c-e 1 以此类推。
如下图所示:

根据偏移量部署元素

  • span 数值 ;表示偏移量。
    代码展示:
<style>main {width: 300px;height: 300px;background-color: rosybrown;margin: 100px auto;display: grid;grid-template-rows: repeat(3,1fr);grid-template-columns: repeat(3,1fr);}main div:nth-child(1){background-color: royalblue;grid-row-end: span 1;grid-column-end: span 3;}main div:nth-child(2){background-color:salmon;grid-row-start:2;grid-column-start: 2;grid-row-end: span 1;grid-column-end:  span 2;}main div:nth-child(3){background-color:springgreen;grid-row-start: 3;grid-column-start: 2;grid-row-end: span 1;grid-column-end: span 1;}</style><main><div></div><div></div><div></div></main>

效果展示:

元素定位简写操作

  • grid-row: 元素开始的行栅格的开始编号/元素结束的行栅格的结束编号
  • grid-column: 元素开始的列栅格的开始编号/元素结束的列栅格的结束编号

例:
代码展示:

<style>main {width: 300px;height: 300px;background-color: rosybrown;margin: 100px auto;display: grid;grid-template-rows: repeat(3,1fr);grid-template-columns: repeat(3,1fr);}main div:nth-child(1){background-color: royalblue;grid-row:1/2;grid-column:1/4;}main div:nth-child(2){background-color:salmon;grid-row:2/3;grid-column:2/4;}main div:nth-child(3){background-color:springgreen;grid-row:3/4;grid-column:3/4;}</style><main><div></div><div></div><div></div></main>

效果展示:

使用区域定位的方式

  • grid-template-areas 给区域命名
  • grid-area:区域名

给栅格进行如下形式的命名:

grid-template-areas: "header header" "nav main" "footer footer";

对于命名后的栅格,浏览器会自动给其栅格线进行命名。如上述命名后,第一条行栅格线的名字是header-start,第二条行栅格线的名字是header-end;以此类推。

然后根据区域布局元素的结构:

<style>main {width: 300px;height: 400px;background-color: rosybrown;margin: 100px auto;display: grid;grid-template-rows: 60px 1fr 60px;grid-template-columns: 60px 1fr;grid-template-areas: "header header" "nav main" "footer footer";}main div:nth-child(1){background:springgreen;grid-area: header;}main div:nth-child(2){background:blueviolet;grid-area: nav;}main div:nth-child(3){background:pink;grid-area: main;}main div:nth-child(4){background:skyblue;grid-area: footer;}</style><main><div></div><div></div><div></div><div></div></main>

效果展示:

使用区域占位符优化布局代码

当多个栅格独立存在时可以使用占位符(“.”),对于要变成一体的需要命名且名字一样

针对于上述根据区域布局元素的结构可以优化成:

<style>main {width: 300px;height: 400px;background-color: rosybrown;margin: 100px auto;display: grid;grid-template-rows: 60px 1fr 60px;grid-template-columns: 60px 1fr;grid-template-areas: "header header" ". ." "footer footer";}main div:nth-child(1){background:springgreen;grid-area: header;}main div:nth-child(2){background:blueviolet;}main div:nth-child(3){background:pink;}main div:nth-child(4){background:skyblue;grid-area: footer;}</style><main><div></div><div></div><div></div><div></div></main>

结果展示:

使用栅格区域部署元素

  • grid-area:行栅格线开始编号/列栅格线开始编号/行栅格线结束编号/列栅格线结束编号

栅格样式的处理

栅格排布方式

  • grid-auto-flow 可选值 row 和column。默认是row

默认情况下,栅格的排布:

grid-auto-flow:column的效果

栅格整体对齐方式处理

已知容器的空间大于栅格空间且栅格的排列方式是默认值

  • 控制栅格水平方向上的排列方式 justify-content
  • 控制栅格垂直方向上的排列方式 align-items

justify-content和 align-items的可选值和作用效果和Flex弹性盒模型的使用方法一样。可以参考Flex弹性盒模型知识点

简写组合方式: place-content: align-items justify-content;

栅格内元素的整体控制

  • 水平方向上 justify-items 【可选值:start,end,center,stretch(默认值)】
  • 垂直方向上 align-items【可选值:start,end,center,stretch(默认值)】

简写组合方式: place-items: align-items justify-items;

栅格内元素的独立控制

  • 水平方向上 justify-self 【可选值:start,end,center,stretch(默认值)】
  • 垂直方向上 align-self【可选值:start,end,center,stretch(默认值)】

简写组合方式: place-self: align-self justify-self;

Note:
     1,栅格只是布局页面的区间,元素的样式仍需要根据之前学的知识点进行设置
     2,栅格内是放置元素的,当不给元素设置宽高时,元素自动充满栅格。
     3,一个页面不仅仅只使用一个栅格,所以给栅格命名的时候不能重复。

设置栅格间距

  • row-gap 栅格的行间距
  • columns 栅格的列间距

简写组合方式: gap:row-gap column-gap;

知识补充:
使用minmax函数控制栅格尺寸的波动
grid-template-rows:repeat(2,minmax(50px,100px)) 代码解析:当容器height发生变化时,栅格的height也会跟着变化,最小取值为50px,最大取值为100px。

CSS基础知识——栅格系统相关推荐

  1. HTML+CSS基础知识3

    HTML+CSS基础知识3 15.css选择器 16.css的继承 17.css优先级 18.css盒子模型 19.css标签分类 20.显示框类型 21.标签的嵌套规范 22.溢出隐藏 23.透明度 ...

  2. CSS基础知识(高级技术)

    CSS基础知识 元素的显示与隐藏 display 显示 visibility 可见性 overflow 溢出 CSS用户界面样式 鼠标样式cursor 轮廓线 outline 防止拖拽文本域resiz ...

  3. css点击a标签显示下划线_好程序员HTML5培训教程-html和css基础知识

    好程序员HTML5培训教程-html和css基础知识,Html是超文本标记语言(英语全称:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言. Css ...

  4. 〖前端开发〗HTML/CSS基础知识学习笔记

    经过一天的学习,把慕课网的HTML/CSS基础知识学完了,笔记整理: 1. 文件结构:HTML文件的固定结构:<html><head>...</head><b ...

  5. HTML/CSS基础知识(四)

    WEB标准和W3C的理解与认识 Web标准是一系列标准的集合. 网页主要由三部分组成:结构(Structure).表现(Presentation)和行为(Behavior). 对应的标准也分三方面:结 ...

  6. html css基础知识

    1 这是自己学习html时候做的一些记录,供大家参考 <!-- 2 块和内联3 块元素:独占一行的元素4 div p h ul5 div没有任何语义,就是一个纯粹的快元素6 就是为了方便布局7 ...

  7. HTML+CSS基础知识简单版

    HTML+CSS基础知识简单版 一.HTML概述 HTML:超文本标记语言,其实就是用来开发网页的一门语言: CSS:层叠样式表,可以用于渲染网页.美化网页.做网页. 1.HTML介绍 HTML:超文 ...

  8. CSS基础知识(一):选择器

    文章目录 前言 一.CSS基础知识 二.选择器 1.选择器 2.基础选择器 2.1 标签选择器 2.2 类选择器 2.3 id选择器 2.4 通配符选择器 2.5 基础选择器总结 3.复合选择器 3. ...

  9. CSS基础知识---三种选择器

    CSS基础知识---三种选择器 选择器 标签选择器 id选择器 class选择器 全部代码 选择器 标签选择器 id选择器 class选择器 标签选择器 选择器优先级:id>class>标 ...

最新文章

  1. c++ windows获得当前工作目录文件_基于linux下Python文件操作
  2. 智能车竞赛云端比赛第三天:一场在家具建材广场中的智能车比赛
  3. 【转】CentOS下firefox安装flash说明
  4. c primer plus第六版电子版_【财经】京东超市PLUS有机联盟:有机品牌提升一站式营销解决方案...
  5. ES6 数值的扩展
  6. var类型推断关键字
  7. C++面试题目(五)
  8. 语文高考识记现代汉字的字形【转】
  9. Spring Boot笔记-解决前后端分离在开发时的跨域问题
  10. xcode5+未能安装到模拟器
  11. java项目嗖嗖移动业务大厅项目报告_Java就业指导课程
  12. 5.8Ghz微波雷达感应技术,智能雷达传感器,人体感应技术方案
  13. 如何激活优动漫PAINT,获取优动漫PAINT序列号
  14. Lighting build failed. Swarm failed to kick off UE4光照构建失败
  15. 1000句英语经典口语(10)
  16. python对缩进太敏感...a_a
  17. 在x86和arm混合部署架构下排查TiKV节点内存占用极高的问题
  18. 新颖的自我介绍_精选简单新颖的自我介绍
  19. NB-IOT电信云北向开发,电信天翼物联网平台对接应用服务
  20. cad角度命令怎么输入_新手入门,学习CAD必须掌握,教你使用标注命令,绘图效率翻一倍...

热门文章

  1. java application.xml_第4章 零XML配置的Spring Boot Application
  2. php留言板发送邮箱功能,留言板新增留言自动发送指定邮箱方法
  3. 【mba市场营销论文】MP公司人工关节植入物的市场营销分析(节选)
  4. python写驱动程序_Python 我的第一个程序
  5. 最全中国和美国省、州、市数据库脚本,可直接复制运行
  6. ChatGPT 训练发图片
  7. 原因分析必知必会的十大要点
  8. 2022计算机保研边缘人的挣扎之路(东南、武大、国防科大、信工所、川大、西交,天大佐治亚、央音、东北大、电科深、西工大、山大)
  9. PHPCMS v9 Getshell(Apache)
  10. android中编辑框明文密文系统图标,Android设置密码的明文和密文显示【原创】