css中的 Grid 布局

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;
    }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NIO--07--Java lO模型详解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 何为 IO?先从计算机结构的角度来解读一下I/o.再从应用程序的角度来解读一下I/O 阻塞/非阻塞/同步/异步IO阻塞IO非阻塞IO异步IO举例 Java中3种常见的IO模型BIO (Blo…

二分查找边界问题——排序数组找元素第一次出现和最后一次出现

二分查找的边界逼近问题&#xff1a; 下面的代码&#xff0c;第一个函数会向左边界逼近&#xff0c;第二个函数会像右边界逼近&#xff01; 考虑left5,right6这种情况&#xff0c;如果5&#xff0c;6的值都是满足的条件的怎么办&#xff1f; 如果mid(leftright1)/2&#xff0c;…

详解Spring中的Aop编程原理JDK动态代理和CGLIB动态代理

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

HuggingFace学习笔记--BitFit高效微调

1--BitFit高效微调 BitFit&#xff0c;全称是 bias-term fine-tuning&#xff0c;其高效微调只去微调带有 bias 的参数&#xff0c;其余参数全部固定&#xff1b; 2--实例代码 from datasets import load_from_disk from transformers import AutoTokenizer, AutoModelForCaus…

【Pytorch】Visualization of Feature Maps(5)——Deep Dream

学习参考来自&#xff1a; PyTorch实现Deep Dreamhttps://github.com/duc0/deep-dream-in-pytorch 文章目录 1 原理2 VGG 模型结构3 完整代码4 输出结果5 消融实验6 torch.norm() 1 原理 其实 Deep Dream大致的原理和【Pytorch】Visualization of Feature Maps&#xff08;1&…

一起学docker系列之十七Docker Compose 与手动操作的比较与优势分析

目录 1 前言2 不使用 Docker Compose2.1 启动 MySQL 容器2.2 启动 Redis 容器2.3 启动微服务容器 3 使用 Docker Compose4 使用 Docker Compose 的优势5 结语参考地址 1 前言 在当今容器化应用的开发与部署中&#xff0c;容器编排工具的选择对于简化流程、提高效率至关重要。本…

蓝桥杯第1037题子串分值和 C++ 字符串 逆向思维 巧解

题目 思路和解题方法 方案一——遍历哈希表 仅能过60%样例,大多数同学都用的该方法&#xff0c;就不过多赘述 #include <iostream> #include <unordered_map> using namespace std; int main() {string s;cin >> s;int n s.size();int res n;for (int i 0…

未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序报错的解决办法

当在本地计算机上使用Microsoft Office相关库时&#xff0c;可能会出现“未在本地计算机上注册microsoft.ACE.oledb.12.0”提供程序的报错。这是由于缺少相关的驱动程序或者未安装相应的软件所导致的。下面是解决该问题的完整攻略。 可能是因为没有安装数据访问组件&#xff0…

反序列化漏洞(二)

目录 pop链前置知识&#xff0c;魔术方法触发规则 pop构造链解释&#xff08;开始烧脑了&#xff09; 字符串逃逸基础 字符减少 字符串逃逸基础 字符增加 实例获取flag 字符串增多逃逸 字符串减少逃逸 延续反序列化漏洞(一)的内容 pop链前置知识&#xff0c;魔术方法触…

树基本概念+前中后序遍历二叉树

&#x1f308;一、树的基本概念 ☀️1.树的定义&#xff1a;树是一种非线性结构&#xff0c;看起来像一棵倒挂的树&#xff0c;根朝上&#xff0c;而叶朝下。 ☀️2.相关术语 1.根节点&#xff1a;图中的A&#xff0c;无前驱结点 2.叶节点&#xff08;终端节点&#xff09;&a…

iptables——建立linux安全体系

目录 一. 安全技术类型 二. linux防火墙 1. 按保护范围划分&#xff1a; 2. 按实现方式划分&#xff1a; 3. 按网络协议划分&#xff1a; 4. 防火墙原理 三. 防火墙工具——iptables 1. netfilter 中五个勾子函数和报文流向 数据包传输过程&#xff1a; ① .五表四链…

设计模式-结构型模式之外观设计模式

文章目录 七、外观模式 七、外观模式 外观模式&#xff08;Facade Pattern&#xff09;隐藏系统的复杂性&#xff0c;并向客户端提供了一个客户端可以访问系统的接口。它向现有的系统添加一个接口&#xff0c;来隐藏系统的复杂性。 这种模式涉及到一个单一的类&#xff0c;该类…

爬虫-xpath篇

1.xpath的基础语法 表达式描述nodename选中该元素/从根节点选取、或者是元素和元素间的过渡//从匹配选择的当前节点选择文档中的节点&#xff0c;而不考虑它们的位置.选取当前节点…选取当前节点的父节点选取属性text()选取文本 举例&#xff1a; 路径表达式结果html选择html元…

使用java批量生成Xshell session(*.xsh)文件

背景 工作中需要管理多套环境, 有时需要同时登陆多个节点, 且每个环境用户名密码都一样, 因此需要一个方案来解决动态的批量登录问题. XShell Xshell有session管理功能: 提供了包括记住登录主机、用户名、密码及登录时执行命令或脚本(js,py,vbs)的功能 session被存储在xsh文…

6-49.自定义的学生类

本题要求定义一个简单的学生类&#xff0c;数据成员仅需要定义学号和姓名&#xff0c;函数成员的原型见给出的代码&#xff0c;请给出函数成员的类外完整实现。 其中m_id和m_name分别表示学生的学号和姓名&#xff0c;类型已经定义好。类内声明了3个成员函数&#xff0c;分别表…

Linux docker批量安装软件

1.前提 具备docker-compose.yml 和 prometheus.yml 文件 常见报错&#xff1a; 1.没有配置network 配置network即可&#xff1a; 2.缺少相关依赖 docker-compose.yml加入相关配置 3.重复项 删除掉重复的 最后 执行 等待完成 下载后相当于有了这些软件包的镜像 启动的每…

大数据Hadoop-HDFS_架构、读写流程

大数据Hadoop-HDFS 基本系统架构 HDFS架构包含三个部分&#xff1a;NameNode&#xff0c;DataNode&#xff0c;Client。 NameNode&#xff1a;NameNode用于存储、生成文件系统的元数据。运行一个实例。 DataNode&#xff1a;DataNode用于存储实际的数据&#xff0c;将自己管理…

OpenHarmony亮相MTSC 2023 | 质量效率共进,赋能应用生态发展

11月25日&#xff0c;MTSC 2023第十二届中国互联网测试开发大会在深圳登喜路国际大酒店圆满举行。大会以“软件质量保障体系和测试研发技术交流”为主要目的&#xff0c;旨在为行业搭建一个深入探讨和交流的桥梁和平台。OpenAtom OpenHarmony&#xff08;简称“OpenHarmony”&a…

Langchain-Chatchat的安装过程

参考&#xff1a;LLMs之RAG&#xff1a;LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs多款embe_一个处女座的程序猿的博客-CSDN博客 1、安装过程中出现了 GPU驱动版本 是11.8 而 python -c "…

文心版吴恩达课程:语义核心(Semantic Kernel)插件的商业应用

文心版吴恩达课程&#xff1a;语义核心&#xff08;Semantic Kernel&#xff09;插件的商业应用 Semantic Kernel is an SDK that integrates Large Language Models (LLMs) like OpenAI, Azure OpenAI, and Hugging Face with conventional programming languages like C#, P…