CSS-Grid(网格)布局

news2024/10/3 0:26:49

前言

之前HTML 页面的布局基本上都是通过 Flexbox 来实现的,能轻松的解决复杂的 Web 布局。 现在又出现了一个构建 HTML 最佳布局体系的新竞争者。就是强大的CSS Grid 布局。

grid和flex区别是什么?适用什么场景?

  1. Flexbox 是一维布局系统,适合做局部布局,比如导航栏组件。
  2. Grid 是二维布局系统,通常用于整个页面的规划。
  3. 二者从应用场景来说并不冲突。虽然 Flexbox 也可以用于大的页面布局,但是没有 Grid 强大和灵活。二者结合使用更加轻松。

特点:

  1. 固定和灵活的轨道尺寸;
  2. 可以使用行号,名称或通过定位网格区域将项目放置在网格上的精确位置;
  3. 可以将多个项目放入网格单元格或区域中,它们可以彼此部分重叠。

缺点:

兼容性比较差。

简单画一张图:

flex布局:

grid布局:

 

网格列

网格元素的垂直线方向称为列。

网格行

网格元素的水平线方向称为行。

网格间距

网格间距指的是两个网格单元之间的网格横向间距或网格纵向间距。

我们可以使用以下属性给元素调整间隙的大小

  • grid-column-gap
  • grid-row-gap
  • grid-gap

我们之前使用的弹性布局 一次只能处理一个维度上的元素布局,一行或者一列。

而现在的grid布局(网格布局)可以更自由的去设置一个容器所站的位置 

例如:

如果使用flex布局去实现排版方法就需要嵌套很多个div去一块一块的区分这些

而现在使用grid布局的话,可以省下很多div的布局,直接将元素所站的位置区分开

基础示例:

使用grid布局实现图中排版:

<!DOCTYPE html>
<html lang="en-us">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>grid</title>
    <style>
        body {
            width: 90%;
            max-width: 900px;
            margin: 2em auto;
            font: .9em/1.2 Arial, Helvetica, sans-serif;
        }

        .container > div {
            border-radius: 5px;
            padding: 10px;
            background-color: rgb(232, 66, 152);
        }
		.container{
			display:grid;
			gap:20px;
			grid-template-columns:1fr 2fr 1fr ;
		}
    </style>
  </head>

<body>
    <div class="container">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
        <div>6</div>
        <div>7</div>
    </div>

</body>

</html>

我们只需要在父元素中添加display:grid;属性,其元素下的子元素就会跟着变

 fr:他是grid布局中的专属属性,用来平均分配容器所占位置

示例:

如图所示,这种布局方式使用弹性布局来实现相对来说是比较麻烦的,但我们使用grid布局就简单很多了

代码如下:

<!DOCTYPE html>
<html lang="en-us">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>Grid</title>
    <style>
      body {
        width: 90%;
        max-width: 900px;
        margin: 2em auto;
        font: 0.9em/1.2 Arial, Helvetica, sans-serif;
      }

      .container {
        display: grid;
        grid-template-columns: 1fr 3fr;
		/* fr单位是frid布局专用的长度单位,可以平均的区分配每个容器所站的位置 */
		/* 每列改怎么去分配位置,例如菜单和内容区,side(这里定义的是菜单,那么他就占用1fr的位置,content(内容)他占3fr的位置,所以在图中我们可以看到内容区要比菜单区域更宽一些) */
        gap: 20px;
		grid-template-areas:'header header'/* header就是头部 */
		 'side content'/* side菜单,content内容 */
		 'footer footer'/* footer底部 */
		 ;
      }
	  /* 给每个容器设置一个名称 */
		header{
			grid-area:header;
		}
		footer{
			grid-area:footer;
		}
		aside{
			grid-area:side;
		}
		article{
			grid-area:content;
		}
      header,
      footer {
        border-radius: 5px;
        padding: 10px;
        background-color: rgb(173, 202, 232);
		border: 1px solid #000;
      }

      aside,article {
        border: 1px solid #999;
      }
    </style>
  </head>

  <body>
    <div class="container">
      <header>这是头部导航</header>
      <article>
        <h1>这里内容区域</h1>
        <p>
         内容1
        </p>

        <p>
          内容2
        </p>
      </article>
      <aside>
        <h2>这里是左侧菜单区域</h2>
        <p>
		菜单
        </p>
      </aside>
      <footer>这里是底部</footer>
    </div>
  </body>
</html>

 grid布局属性:

参考某教程:grid布局

总结:

Grid 布局与 Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,它们也存在重大区别。

Grid 可以做Flexbox做不了的事,Flexbox 比 Grid 兼容性更好,他们可以共同工作。Grid item可以成为flexbox容器,flex item可以成为grid 容器。

可以根据业务场景需要选择相应布局。

侵删

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

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

相关文章

js几种对象创建方式

适用于不确定对象内部数据方式一&#xff1a;var p new Object(); p.name TOM; p.age 12 p.setName function(name) {this.name name; }// 测试 p.setName(jack) console.log(p.name,p.age)方式二&#xff1a; 对象字面量模式套路&#xff1a;使用{}创建对象&#xff0c;同…

chatgpt 到底颠覆了什么 第一部分

ChatGPT一出来&#xff0c;一堆搞NLP的立马哭了。为什么&#xff1f;不该问为什么哭&#xff0c;而该问为什么还不哭。 有两个立马大哭的理由。 第一个理由很多人说了&#xff0c;范式改变。 虽然说没有哪个研究领域&#xff0c;甚至没有哪个领域敢说自己真的是天道酬勤绝对公平…

自己第一次在虚拟机完整部署ssm项目心得体会

过程使用资源和博文 琳哥发的linux课件文档,阳哥发的linux课件文档(私聊我要) https://www.likecs.com/show-205274015.html https://www.cnblogs.com/aluoluo/articles/15845183.html https://blog.csdn.net/osfipin/article/details/54405445 https://blog.csdn.net/drea…

【封装xib补充 Objective-C语言】

一、那么首先,咱们就从这个结果来分析 1.就不给大家一步一步分析了,直接分析我们这里怎么想的, 首先,我们看到这样的一个界面,我们想,这些应用数据是不是来源于一个plist文件吧, 所以说,我们首先要,第一步,要懒加载,把这个plist文件中的数据,加载起来, 那么,因…

超详细MySQL(免安装版)安装与配置

一、MySQL下载 首先打开MySQL官网&#xff0c;官网首页地址为 MySQL官网首页地址 进入官网后如下图所示&#xff0c;点击DOWNLOADS进入下载页面 下滑页面找到MySQL Community&#xff08;GPL&#xff09;Downloads>>并点击 接下来点击MySQL Community Server 若想要安…

C语言数组【详解】

数组1. 一维数组的创建和初始化1.1 数组的创建1.2 数组的初始化1.3 一维数组的使用1.4 一维数组在内存中的存储2. 二维数组的创建和初始化2.1 二维数组的创建2.2 二维数组的初始化2.3 二维数组的使用2.4 二维数组在内存中的存储3. 数组越界4. 数组作为函数参数4.1 冒泡排序函数…

java 学习3(数组)

java ——数组 ✍作者&#xff1a;电子科大不知名程序员 &#x1f332;专栏&#xff1a;java学习指导 各位读者如果觉得博主写的不错&#xff0c;请诸位多多支持&#xff1b;如果有错误的地方&#xff0c;欢迎在评论区指出 数组是一组相同类型元素按一定顺序排列的集合 数组相…

[MatLab]变量与数据结构

在开始工程之前&#xff0c;需要先指定工程目录&#xff0c;按住下图红框按钮进行选择。 Matlab分为编辑器和命令窗口&#xff0c;编辑器用来编写代码文件&#xff0c;而命令窗口可以实时交互。 在窗口中输入clc即可清除命令窗口&#xff1b;clear all可以清除工作区中所有变量…

【论文笔记】Long Tail Learning via Logit Adjustment

摘要 Our techniques revisit the classic idea of logit adjustment based on the label frequencies, either applied post-hoc to a trained model, or enforced in the loss during training. Such adjustment encorages a large relative margin between logits of rare …

项目管理系统的设计与实现

技术&#xff1a;Java、JSP等摘要&#xff1a;企业项目管理系统是为了使企业项目能够按照预定的成本、进度、质量顺利完成&#xff0c;而对人员、产品、过程和项目进行分析和管理的活动&#xff0c;系统主要包括项目基本信息操作、项目规划管理&#xff0c;合同管理&#xff0c…

一步一步教你如何使用 Visual Studio Code 编译一段 C# 代码

以下是一步一步教你如何使用 Visual Studio Code 编写使用 C# 语言输出当前日期和时间的代码&#xff1a; 1、下载并安装 .NET SDK。您可以从 Microsoft 官网下载并安装它。 2、打开 Visual Studio Code&#xff0c;并安装 C# 扩展。您可以在 Visual Studio Code 中通过扩展菜…

VMware NSX 4.1 发布 - 网络安全虚拟化平台

请访问原文链接&#xff1a;VMware NSX 4 - 网络安全虚拟化平台&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysin.org VMware NSX 提供了一个敏捷式软件定义基础架构&#xff0c;用来构建云原生应用程序环境。NSX 专注于为具有异…

【SPSS】两配对样本T检验分析详细操作教程(附案例实战)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

【微服务】-认识微服务

目录 1.1 单体、分布式、集群 单体 分布式 集群 1.2 系统架构演变 1.2.1 单体应⽤架构 1.2.2 垂直应⽤架构 1.2.3 分布式架构 1.2.4 SOA架构 1.2.5 微服务架构 1.3 微服务架构介绍 微服务架构的常⻅问题 1.4 SpringCloud介绍 1.4.1 SpringBoot和SpringCloud有啥关…

【Flutter入门到进阶】Flutter基础篇---介绍与环境

1 Flutter介绍 Flutter是谷歌公司开发的一款开源、免费的UI框架&#xff0c;可以让我们快速的在Android和iOS上构建高质量 App。它最大的特点就是跨平台、以及高性能。 目前 Flutter 已经支持 iOS、Android、Web、Windows、macOS、Linux等。 Flutter基于谷歌的dart语言&#…

NLTK与StanfordNLP工具包结合使用

(一) 概述 1.NLTK NLTK是一款著名的python自然语言处理工具包&#xff0c;其内收集了NLP领域大量的公开数据集以及常用模型&#xff0c;涵盖了分词&#xff0c;词性标注&#xff0c;命名实体识别&#xff0c;句法分析&#xff0c;依存分析等各种NLP领域的子任务。 2.Stanfor…

【Linux】动静态库-概念制作

文章目录前置知识:库的命名C标准库动静态库安装C/C静态库完整的库需要的东西制作静态库制作使用一个小疑惑:制作动态库制作使用总结:前置知识: 一般库分为两种:动态库和静态库 静态库和动态库本质就是文件&#xff01;也有inode 库的命名 库文件的命名一般为: libXXXXX.so 或…

基于部标JT808的车载视频监控需求与EasyCVR视频融合平台解决方案设计

一、方案背景 众所周知&#xff0c;在TSINGSEE青犀视频解决方案中&#xff0c;EasyCVR视频智能融合共享平台主要作为视频汇聚平台使用&#xff0c;不仅能兼容安防标准协议RTSP/Onvif、国标GB28181&#xff0c;互联网直播协议RTMP&#xff0c;私有协议海康SDK、大华SDK&#xf…

谷歌seo做的外链怎样更快被semrush识别

本文主要分享做谷歌seo外链如何能让semrush工具快速的记录并能查询到。 本文由光算创作&#xff0c;有可能会被剽窃和修改&#xff0c;我们佛系对待这种行为吧。 谷歌seo做的外链怎样更快被semrush识别&#xff1f; 答案是&#xff1a;多使用semrush搜索目标网站可加速爬虫抓…

SOLIDWORKS Premium 2023 SP1.0 三维设计绘图软件

SOLIDWORKS 中文完美正式版提供广泛工具来处理最复杂的问题,并提供深层技术完成关键细节工作。新功能可助您改善产品开发流程,以更快地将创新产品投入生产。Solidworks 是达索公司最新推出的三维CAD系统,它可让设计师大大缩短产品的设计时间,让产品得以快速、高效地投向市场…