css中的 Grid 布局

news2025/2/26 7:26:18

flex布局和grid布局区别

  • flex布局是 一维布局
  • grid布局是二维布局

flex布局示例
在这里插入图片描述
grid布局示例
在这里插入图片描述

grid 布局初体验

体验地址
在这里插入图片描述

  <div class="wrapper">
    <div class="one item">One</div>
    <div class="two item">Two</div>
    <div class="three item">Three</div>
    <div class="four item">Four</div>
    <div class="five item">Five</div>
    <div class="six item">Six</div>
  </div>

1、容器和项目
wrapper上声明 display:grid 来创建一个网格容器,.wrapper 就是容器,每一个网格容器的子元素就是 项目
2、网格轨道
grid-template-columnsgrid-template-rows 属性来定义网格中的行和列
3、网格单元
就是单元格
4、网格线

当我们定义网格时,我们定义的是网格轨道,而不是网格线。Grid 会为我们创建编号的网格线来让我们来定位每一个网格元素。m 列有 m + 1 根垂直的网格线,n 行有 n + 1 跟水平网格线。比如上图示例中就有 4 根垂直网格线。一般而言,是从左到右,从上到下,1,2,3 进行编号排序。当然也可以从右到左,从下到上,按照 -1,-2,-3…顺序进行编号排序

在这里插入图片描述

容器属性

1、display 属性

在这里插入图片描述

<body>
  <span>display:grid 头部</span>
  <div class="wrapper">
    <div class="one item">One</div>
    <div class="two item">Two</div>
    <div class="three item">Three</div>
    <div class="four item">Four</div>
    <div class="five item">Five</div>
    <div class="six item">Six</div>
  </div>
  <span>display:grid 尾部</span>

  </br>
  </br>
  </br>
  <span>display:inline 头部</span>

  <div class="wrapper" style="display: inline-grid;">
    <div class="one item">One</div>
    <div class="two item">Two</div>
    <div class="three item">Three</div>
    <div class="four item">Four</div>
    <div class="five item">Five</div>
    <div class="six item">Six</div>
  </div>
  <span>display:grid 尾部</span>

</body>

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

  • 固定 列、行 的高度、宽度
  • repeat()函数:该函数接受两个参数,第一个参数是重复的次数,第二个参数是所要重复的值
  • auto-fill 关键字
  • fr 关键字
  • mainmax函数
  • auto 关键字

固定列、行的高度、宽度
在这里插入图片描述

    .wrapper {
      display: grid;
      grid-gap: 20px;

      /* 定义行 高度,第一行100px ,第二行200px */
      grid-template-rows: 100px 200px;
      /* 定义列 宽度,第一列100px,第二行150px,第三行200px */
      grid-template-columns: 100px 150px 200px;
    }

repeat函数
在这里插入图片描述

    .wrapper {
      display: grid;
      grid-gap: 20px;
      /* repeat 函数:该函数接受两个参数,第一个参数是重复的次数,第二个参数是所要重复的值 */
      grid-template-rows: repeat(2, 100px);
      grid-template-columns: 100px 150px 200px;
    }

auto-fill 关键字

每一行的高度都是50px,但是每一列的宽度都是200px,但是每一行能显示几个是自适应的, 根据可视区域的大小决定的

在这里插入图片描述

    .wrapper {
      display: grid;
      grid-gap: 20px;
      grid-auto-rows: 50px;
      grid-template-columns: repeat(auto-fill, 200px);

    }

fr 关键字

fr 类似于flex 布局的 flex:1 ,把空间分成多少份
第一列宽度是 200px ,第二列和第三行 的宽度相加,是 剩余宽度, 第二列占剩余宽度的 1/3,第三列占剩余宽度 2/3

    .wrapper {
      display: grid;
      grid-gap: 20px;
      grid-auto-rows: 50px;
      grid-template-columns: 200px 1fr 2fr;
    }

maxmin函数

第三列最小是300px ,最大 不能 大于 盒子宽度的 1/2

在这里插入图片描述

    .wrapper {
      display: grid;
      grid-gap: 20px;
      grid-auto-rows: 50px;
      grid-template-columns: 1fr 1fr minmax(300px, 2fr);
    }

auto 关键字

可以做到自适应等场景

    .wrapper {
      display: grid;
      grid-gap: 20px;
      grid-auto-rows: 50px;
      grid-template-columns: 300px auto
    }

3、grid-row-gap属性、grid-column-gap属性以及 grid-gap属性

  • grid-gap :写一个参数则是,行间距、列间距都是这个值,写两个则 第一个是行间距,第二个是列间距
  • 行间距:grid-row-gap 、row-gap(这个属性支持度没有前面的好)
  • 列间距:grid-column-gap、column-gap(这个属性支持度没有前面的好)
    .wrapper {
      display: grid;
      grid-gap: 20px;
      /* grid-row-gap: 20px;
      grid-column-gap: 40px; */

      /* row-gap: 30px;
      column-gap: 60px; */



      grid-template-rows: 100px 200px;
      grid-template-columns: 100px 150px 200px;

    }

4、grid-template-areas 属性

用于定义区域,一个区域由一个或者多个单元格组成

  • . 表示 空的单元格,是占位置的
  • 一对 双引号, 表示一行

在这里插入图片描述

  .wrapper {
      display: grid;
      grid-gap: 20px;
      grid-template-rows: 100px 200px;
      grid-template-columns: 100px 150px 200px;
      grid-template-areas:
        ". . one"
        ". two ."
        ". . three"
        "four five six";
    }

    .one {
      background: #19CAAD;
      grid-area: one;
    }

    .two {
      background: #8CC7B5;
      grid-area: two;
    }

    .three {
      background: #D1BA74;
      grid-area: three;
    }

    .four {
      background: #BEE7E9;
      grid-area: four;
    }

    .five {
      background: #E6CEAC;
      grid-area: five;
    }

    .six {
      background: #ECAD9E;
      grid-area: six;
    }

    .item {
      text-align: center;
      font-size: 200%;
      color: #fff;
    }

5、grid-auto-flow 属性

grid-auto-flow 属性控制着自动布局算法怎样运作,精确指定在网格中被自动布局的元素怎样排列。

  • 单个关键字:row、column,或 dense 中的一个。
  • 两个关键字:row dense 或 column dense。

在这里插入图片描述

    .wrapper,
    .wrapper-1,
    .wrapper-2 {
      margin: 50px;
    }

    .wrapper {
      display: grid;
      grid-template-rows: 50px;
      grid-template-columns: 100px 200px 100px;
      grid-auto-flow: row;
      /* grid-gap: 5px; */
    }

    .wrapper-1 {
      display: grid;
      grid-auto-columns: 100px;
      grid-auto-flow: column;
      grid-gap: 5px;
      grid-template-rows: 50px 50px;
    }

    .wrapper-2 {
      display: grid;
      grid-template-columns: 100px 200px 100px;
      grid-auto-flow: row dense;
      grid-gap: 5px;
      grid-auto-rows: 50px;
    }

    .one {
      background: #19CAAD;
    }

    .two {
      background: #8CC7B5;
    }

    .three {
      background: #D1BA74;
    }

    .four {
      background: #BEE7E9;
    }

    .five {
      background: #E6CEAC;
    }

    .six {
      /* grid-column-start: span 2; */

      /* grid-column: auto; */
      grid-column: span 2; /* 这个意思是占据两个单元格*/
      background: #ECAD9E;
    }

    .seven {
      background: #BEEDC7;
    }

    .eight {
      background: #F4606C;
    }

    .nine {
      background: #A0EEE1;
    }

    .item {
      text-align: center;
      font-size: 200%;
      color: #fff;
    }
  <h1>先行后列</h1>
  <div class="wrapper">
    <div class="one item">One</div>
    <div class="two item">Two</div>
    <div class="three item">Three</div>
    <div class="four item">Four</div>
    <div class="five item">Five</div>
    <div class="six item">Six</div>
    <div class="seven item">Seven</div>
    <div class="eight item">eight</div>
    <div class="nine item">Nine</div>
  </div>

  <h1>先列后行</h1>
  <div class="wrapper-1">
    <div class="one item">One</div>
    <div class="two item">Two</div>
    <div class="three item">Three</div>
    <div class="four item">Four</div>
    <div class="five item">Five</div>
    <div class="six item">Six</div>
    <div class="seven item">Seven</div>
    <div class="eight item">eight</div>
    <div class="nine item">Nine</div>
  </div>

  <h1>先行后列:dense</h1>
  <div class="wrapper-2">
    <div class="one item">One</div>
    <div class="two item">Two</div>
    <div class="three item">Three</div>
    <div class="four item">Four</div>
    <div class="five item">Five</div>
    <div class="six item">Six</div>
    <div class="seven item">Seven</div>
    <div class="eight item">eight</div>
    <div class="nine item">Nine</div>
  </div>

6、justify-items 属性、align-items 属性

  • justify-items 属性设置单元格内容的水平位置(左中右)
  • align-items 属性设置单元格内容的垂直位置(上中下)
.container {
  justify-items: start | end | center | stretch;
  align-items: start | end | center | stretch;
}

justify-items: center;
在这里插入图片描述
justify-items:start;
在这里插入图片描述
justify-items:end;
在这里插入图片描述
justify-items:stretch;

拉伸,铺满

在这里插入图片描述

7、justify-content 属性、align-content 属性以及 place-content 属性

  • justify-content 属性是整个内容区域在容器里面的水平位置(左中右)
  • align-content 属性是整个内容区域在容器里面的垂直位置(上中下)。它们都有如下的属性值。
  justify-content: start | end | center | stretch | space-around | space-between | space-evenly;
  align-content: start | end | center | stretch | space-around | space-between | space-evenly; 

justify-content

  • start:将网格对齐到 网格容器(grid container) 的左侧起始边缘(左侧对齐)
  • end:将网格对齐到 网格容器 的右侧结束边缘(右侧对齐)
  • center:将网格对齐到 网格容器 的水平中间位置(水平居中对齐)
  • stretch:调整 网格项(grid items) 的宽度,允许该网格填充满整个 网格容器 的宽度
  • space-around:在每个网格项之间放置一个均匀的空间,左右两端放置一半的空间
  • space-between:在每个网格项之间放置一个均匀的空间,左右两端没有空间
  • space-evenly:项目与项目的间隔相等,项目与容器边框之间也是同样长度的间隔

在这里插入图片描述

8、grid-auto-columns 属性和 grid-auto-rows 属性

显式网格包含了你在 grid-template-columns 和 grid-template-rows 属性中定义的行和列。如果你在网格定义之外又放了一些东西,或者因为内容的数量而需要的更多网格轨道的时候,网格将会在隐式网格中创建行和列

如果有隐式网格它的行高和列宽可以根据 grid-auto-columns 属性和 grid-auto-rows属性设置

    .wrapper {
      display: grid;
      grid-template-columns: 150px 100px;
      grid-gap: 20px;
      grid-template-rows: 100px 100px;

      grid-auto-rows: 300px;
      /* grid-auto-columns: 200px; */
    }

在这里插入图片描述

项目属性

1、grid-column-start 属性、grid-column-end 属性、grid-row-start 属性以及grid-row-end 属性

grid-column CSS 属性是 grid-column-start (en-US) 和 grid-column-end (en-US) 的简写属性
grid-row 属性是一种 grid-row-start (en-US) 和 grid-row-end (en-US) 的缩写(shorthand)形式

具体可参考MDN MDN grid-row

  • grid-column-start 属性:左边框所在的垂直网格线
  • grid-column-end 属性:右边框所在的垂直网格线
  • grid-row-start 属性:上边框所在的水平网格线
  • grid-row-end 属性:下边框所在的水平网格线

在这里插入图片描述

    .wrapper {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      grid-gap: 20px;
      grid-auto-rows: minmax(100px, auto);
    }

    .one {
      /* grid-column-start: 1;
      grid-column-end: 2; */
      background: #19CAAD;
    }

    .two {
      grid-column-start: 2;
      grid-column-end: 4;
      grid-row-start: 1;
      grid-row-end: 2;
      /*   如果有重叠,就使用 z-index */
      z-index: 1;
      background: #8CC7B5;
    }

    .three {
      /* grid-column-start: 3;
      grid-column-end: 4; */
      /* grid-row-start: 1;
      grid-row-end: 4; */

      grid-column: 3 / 4;
      grid-row: 1 / 4;
      background: #D1BA74;
      z-index: 2;
    }

    .four {
      grid-column-start: 1;
      grid-column-end: 2;
      grid-row-start: 2;
      grid-row-end: 5;
      background: #BEE7E9;
    }

    .five {
      grid-column-start: 2;
      grid-column-end: 2;
      grid-row-start: 2;
      grid-row-end: 5;
      background: #E6CEAC;
    }

    .six {
      grid-column: 3;
      grid-row: 4;
      background: #ECAD9E;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1278689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【中文编码】利用bert-base-chinese中的Tokenizer实现中文编码嵌入

最近接触文本处理&#xff0c;查询了一些资料&#xff0c;记录一下中文文本编码的处理方法吧。   先下载模型和词表&#xff1a;bert-base-chinese镜像下载   如下图示&#xff0c;下载好的以下文件均存放在 bert-base-chinese 文件夹下    1. 词编码嵌入简介 按我通俗的…

笔记-基于CH579M模块通过网线直连电脑进行数据收发(无需网络)

刚学习&#xff0c;做个记录。 基于CH579M模块通过网线直连电脑进行数据收发(无需网络) 目录 一、工具1、CH579模块2、 网线3、电脑以及网络调试工具 二、操作步骤1、TCP/UDP等程序下载以及设置以太网IP2、网络断开3、检查以太网是否正常显示并稳定4、打开网络调试助手进行测试…

揭秘原型链:探索 JavaScript 面向对象编程的核心(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Swin Transformer实战图像分类(Windows下,无需用到Conda,亲测有效)

目录 前言 一、从官网拿到源码&#xff0c;然后配置自己缺少的环境。 针对可能遇到的错误&#xff1a; 二、数据集获取与处理 2.1 数据集下载 2.2 数据集处理 三、下载预训练权重 四、修改部分参数配置 4.1 修改config.py 4.2 修改build.py 4.3 修改units.py 4.4 修…

【程序设计】简易生产者、消费者模型

需求&#xff1a; 创建消息队列时需要指定队列的容量上限&#xff0c;队列中没有消息时&#xff0c;消费者从队列中take元素会阻塞&#xff1b;队列中的消息数量达到容量上限时&#xff0c;生产者往队列中put元素会阻塞。要保证线程安全。 组成&#xff1a; &#xff08;1&…

西南科技大学模拟电子技术实验五(集成运算放大器的应用设计)预习报告

一、计算/设计过程 设计一:用集成运放设计一个输入为0.05v,放大为-100的反相比例运算电路。 对于理想电路,反相比例运算电路的输出电压与输入电压之间的关系如下: =-100,所以 =100 若是假定R1为100k,则R2= =1k 为了减小输入级偏置电流引起的运算误差,在同相输入端…

全新MacOS固件正式版发布,打造出色的操作系统体验!

MacOS 11-14(PKG系统安装包及IPSW固件) 11.7.10/12.7.1/13.6.2/14.1.2正式版已经隆重发布&#xff01;这些固件版本适用于MacOS 11至14&#xff0c;带来了令人瞩目的升级和改进。 新版本固件通过增强系统的稳定性和性能&#xff0c;为用户创造了更加出色的操作系统体验。无论您…

VSC++: string声明的字符串这么相加

缘由https://bbs.csdn.net/topics/397667834 void string声明的字符串这么相加() {//缘由https://bbs.csdn.net/topics/397667834struct teacher { string name; };teacher t[3];string teachernameseed1 "张赵王";//把字符串放入种子中string teachernameseed2 &…

Docker从入门到实战:Docker快速部署、Dockerfile编写、容器间通信及共享数据实战、Docker-compose详解

文章目录 一、基本概念1、体系结构2、容器与镜像1&#xff09;镜像2&#xff09;容器a、容器内部结构b、容器生命周期 3、执行流程 二、常用命令docker pull 镜像名<:tags> &#xff1a;从远程仓库抽取镜像docker images&#xff1a;查看本地镜像docker run 镜像名<:t…

vue项目node-sass^4.14.1 python gyp 报错解决办法

npm i node-sass4.14.1 --sass_binary_sitehttps://npm.taobao.org/mirrors/node-sass/参考链接&#xff1a;链接

wireshark自定义协议插件开发

目录 脚本代码 报文显示 脚本代码 local NAME "test" test_proto Proto("test", "test Protocol") task_id ProtoField.uint16("test.task_id", "test id", base.DEC) cn ProtoField.uint8("test.cn", &qu…

ganache部署智能合约报错VM Exception while processing transaction: invalid opcode

这是因为编译的字节码不正确&#xff0c;ganache和remix编译时需要选择相同的evm version 如下图所示&#xff1a; remix: ganache: 确保两者都选择london或者其他evm&#xff0c;只要确保EVM一致就可以正确编译并部署&#xff0c; 不会再出现VM Exception while processing…

组合模式-C++实现

组合模式是一种结构型设计模式&#xff0c;它允许我们将对象组织成树状结构&#xff0c;并以递归的方式处理它们。该模式通过将单个对象和组合对象统一对待&#xff0c;使得客户端可以以一致的方式处理对象集合。 组合模式中有两种角色&#xff1a;组合和组件。组件就是叶子节…

三轴加速度计LIS2DW12开发(2)----基于中断信号获取加速度数据

三轴加速度计LIS2DW12开发.2--轮基于中断信号获取加速度数据 概述视频教学样品申请生成STM32CUBEMX串口配置IIC配置CS和SA0设置INT1设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置开启INT1中断设置传感器的量程配置过滤器链配置电源模式设置输出数据速率中断判断加速…

常用数据预处理方法 python

常用数据预处理方法 数据清洗缺失值处理示例删除缺失值插值法填充缺失值 异常值处理示例删除异常值替换异常值 数据类型转换示例数据类型转换在数据清洗过程中非常常见 重复值处理示例处理重复值是数据清洗的重要步骤 数据转换示例 数据集成示例数据集成是将多个数据源合并为一…

基于Intel Ai Analytics Toolkit 及边缘计算的溶氧预测水产养殖监测方案

基于AI的淡水养殖水质溯源、优化系统方案 前言一、关键需求及方案概述二、方案设计预测机制LSTM 模型基于intel AI 的时序水质分析模型与分类模型优化 三、实战分析1、方案简述2、数据分析预处理特征类型处理特征分布分析 3、特征构造4、特征选择过滤法重要性排序 5.构建LSTM模…

Android drawable layer-list右上角红点,xml布局实现,Kotlin

Android drawable layer-list右上角红点&#xff0c;xml布局实现&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <layer-list xmlns:android"http://schemas.android.com/apk/res/android"><itemandroid:id"id…

mfc项目设置软件版本

//上面设置的版本通过下面的代码可以获取到 TSTRING CVersion::GetSoftVersion() {TSTRING strVer _T("");TCHAR szPath[MAX_PATH] _T("");memset(szPath, 0, sizeof(szPath));::GetModuleFileName(NULL, szPath, sizeof(szPath));//得到本程序的目录UIN…

品优购:主体页,列表页,注册页

目录 main部分 recom推荐部分 新建列表list.html和list.css 创建register.html 和register.css main部分 focus焦点图通过ul和li框住img&#xff0c;右侧分为三栏 第一栏newsflash盒子&#xff0c;首先边框news-hd只写bottom&#xff0c;线条为dotted&#xff1b;然后news…

clickhouse -- clickhouse解析复杂JSON数组

举例 - 查数据 select _id,doctorId,patientId,diagnosisList from patient_disease final where diagnosisList is not null limit 3;- 解析数组 SELECT _id,doctorId,patientId,visitParamExtractRaw(diagnosisList,diagnosisName) FROM patient_disease final where _id …