使用 Grid 进行常见布局

2023-10-31

grid 布局是W3C提出的一个二维布局系统,通过 display: grid 来设置使用,对于以前一些复杂的布局能够得到更简单的解决。本篇文章通过几个布局来对对 grid 布局进行一个简单的了解。目前,grid 仅仅只有 Edge使用前缀能够支持,为了更好地体验,可以使用 Chrome 浏览器,在 chrome://flags 开启 #enable-experimental-web-platform-features 选项。 另外,更多的例子可以前往 Grid by examples, 更多的用法可以前往 W3 Specification,也可以前往 A Complete Guide to Grid 以及 译文

2019年2月注:目前 Grid 已被所有主流浏览器所支持

布局代码示例

原文链接见: 山月的博客

左右固定中间自适应

以前,这需要使用 negative marginfloat, position 解决,圣杯布局是一个比较好的解决方案。后来,flex横空出世,使用 flex-growflex-basis 完成自适应布局。grid 布局相比 flex 布局更加简单,只需要在 container 上设置 grid-template-columns: 100px auto 100px

.container {
  display: grid;
  grid-template-columns: 100px auto 200px;
}
复制代码

三等分

以前的方法可以设置 float: left; width: 33.33333333,使用 flex 可以设置 flex-basis: 33.33333333。在 grid 中只需要设置 grid-template-columns: 1fr 1fr 1fr

.container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  height: 100px;
  background-color: #feb;
}
复制代码

三七分

在 grid 中设置 container 为十等分,可以使用 grid-template-columns: repeat(10, 1fr)repeat 为重复10次 1frgrid-columngrid-column-startgrid-column-end 的缩写,表示起止的 line。使用 grid 进行栅格系统的布局也是很简单。

.container {
  display: grid;
  grid-template-columns: repeat(10, 1fr);
}

.column-3 {
  grid-column: 1 / 4;
}

.column-7 {
  grid-column: 4 / 11;
}
复制代码

复杂布局

以上几个例子,均是单向布局,flex 就能很好的解决,而如下几个布局,均是二维布局,传统布局有些困难。以下示例图,可以在 container 上使用 grid-template-areas,在 item 上设置 grid-area 属性来设置复杂布局。

<div class="grid-layout">
  <div class="header">header</div>
  <div class="left">left</div>
  <div class="main">main</div>
  <div class="right">right</div>
  <div class="footer">footer</div>
</div>
复制代码
.container {
  display: grid;
  grid-template-columns: 100px auto 100px;
  grid-template-rows: 40px 300px 50px;
  grid-template-areas: "header header header"
                       "left main right"
                       "footer footer footer";
}

.container .header {
  grid-area: header;
}

.container .footer {
  grid-area: footer;
}

.container .left {
  grid-area: left;
}

.container .right {
  grid-area: right;
}

.container .main {
  grid-area: main;
}
复制代码

九宫格

在传统布局中就比较有困难。在 grid 中设置三行三列等宽,并使用 grid-gap 设置间隙。

.container {
  width: 300px;
  height: 300px;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: 1fr 1fr 1fr;
  grid-gap: 8px;
  border: 1px solid #fac;
  padding: 8px;
}
复制代码

参考

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Grid 进行常见布局 的相关文章

随机推荐

  • matlab算法_决策树算法MATLAB实践

    在MATLAB中 为方便用户对决策树算法的使用 MATLAB中针对分类决策树和回归决策树分别封装了两个函数 fitctree和fitrtree 由于分类决策树和回归决策树两者具有极大的相似性 因此fitctree和fitrtree两者的使用
  • 我的世界java版tp_神奇的tp指令 我的世界tp指令的用法

    神奇的tp指令 我的世界tp指令的用法 tp指令是每个玩服务器的玩家都要了解和掌握的一个指令 那下面游戏园小编就给大家详细的介绍一下在我的世界中tp指令要怎么使用吧 希望大家喜欢 其实是运用到了指令之中的tp指令 tp 自己的名字 坐标 O
  • 走梅花桩步数

    题目描述 题目描述 Redraiment是走梅花桩的高手 Redraiment总是起点不限 从前到后 往高的桩子走 但走的步数最多 不知道为什么 你能替Redraiment研究他最多走的步数吗 样例输入 6 2 5 1 5 4 5 样例输出
  • 使用微信小程序连接到 MQTT 云服务

    微信小程序是腾讯于 2017 年 1 月 9 日推出的一种不需要下载安装即可在微信平台上使用的应用程序 用户扫一扫或者搜一下即可打开应用 也体现了 用完即走 的理念 用户不用关心是否安装太多应用的问题 应用将无处不在 随时可用 但又无需安装
  • input-file 部分手机不能拍照问题

    曾经遇到一个需求 用户拍身份证上传验证 然后我卡在了拍照这个点上 最初采用的是微信的 api wx chooseImage 但随后发现 返回的是一种只有微信才能预览的 url 格式 但验证是要放在 PC 上进行的 等于保存了这个 url 也
  • uniapp省市区3级联动组件

    1 组件代码picker region vue
  • CDN 内容分发网络

    第一步 HTML的文件引用 HTML的文件头 也有文件中 文件尾 那边常有其他文件引用 比如CSS以及JS的引用 就以bootstrap常用的引用来举个栗子 你常见的引用可能会是这样的
  • MVN Scope属性说明

    MVN 的Scope属性包括 compile 默认配置 provided runtime system test compile compile是默认的范围 如果没有提供一个范围 那该依赖的范围就是编译范围 编译范围依赖在所有的classp
  • Web前端复习——Javascript(1)

    1 js发展进程关键词 ECMAScript标准 定义了js语言的核心语法 Netscape 遵照标准 实现了Javascript语言 Microsoft 遵照标准 实现了JSscript标准 W3C DOM标准 专门操作网页内容的标准 所
  • 算法基础--递归与回溯、递推、迭代关系

    递归的优缺点 优点 代码更简洁清晰 可读性更好 实际上递归的代码更清晰 但是从学习的角度要理解递归真正发生的什么 是如何调用的 调用层次和路线 调用堆栈中保存了什么 可能是不容易 但是不可否认递归的代码更简洁 缺点 由于递归需要系统堆栈 所
  • 微信小程序期末作业-优购商城

    优购商城微信小程序 2021下半年微信小程序期末作业 下载链接在文末 首页有轮播图 点我下载资源 https download csdn net download weixin 43474701 57893310
  • Visual Studio中如何进行多线程调试

    多线程的应用通常使得我们的程序调试变得困难和复杂 但是也是有章法可言的 在设计和开发多线程的程序时 需要考虑的就是多线程之间的资源共享和相互协作 资源共享和协作通常使用互斥量和信号量机制进行解决 我们在调试多线程程序时 不能把程序运行过程仅
  • 报错处理:org.xml.sax.SAXParseException: 不允许有匹配 “[xX][mM][lL]“ 的处理指令目标

    在vue项目中配置user xml文件后 重新启动后台报错 org xml sax SAXParseException 不允许有匹配 xX mM lL 的处理指令目标 后面查阅后发现 xml文件是从别处粘贴过来的 没有顶格写 这样 达咩 这
  • Nginx相关配置

    启动Nginx 到nginx sbin目录下 nginx 1 反向代理的配置一 打开浏览器 在浏览器的地址栏输入 www 123 com 跳转到Linux系统tomcat上 我们访问一个网址的时候 浏览器会先查询本地有没有缓存这个网址对应的
  • 计算机牛人找工作-----可以参考(9个offer,12家公司,35场面试,从微软到谷歌2012)

    http www kuqin com job 20130111 333954 html 1 简介 毕业答辩搞定 总算可以闲一段时间 把这段求职经历写出来 也作为之前三个半月的求职的回顾 首先说说我拿到的offer情况 微软 3面 gt 终面
  • SDN介绍

    随着通信技术的不断发展 SDN已经逐渐成为整个行业注目的焦点 很多人认为SDN技术必将对传统网络带来一次划时代的变革 那么 什么是SDN 我们有应该如何理解和学习SDN 我们为什么需要SDN SDN的实现方式有哪些 SDN的未来发展方向是什
  • Mac安装Redis

    要在Mac上安装Redis 你可以按照以下步骤进行操作 打开终端应用程序 Terminal 可以在 应用程序 文件夹的 实用工具 目录下找到它 或者command 空格 输入ter然后直接回车 确保你已经安装了Homebrew 如果没有 请
  • 解决kibana启动时:3005 - wrong protocol being used to connect to the wazuh api 和 Wazuh API seems to be dow

    解决elasticsearch缺少模板问题 https mp csdn net editor html 112570396 后 依然不能正常检测到 wazuh api 状态 默认ip和端口 现在 解决kibana启动时 3005 wrong
  • Git教程---Windows安装及命令使用(详细例子)

    目录 一 Git的工作原理 二 Git下载及安装 三 Git配置 四 Git命令 示例 参考链接 一 Git的工作原理 Git有四个工作区域 其中三个工作区域工作在本地 一个工作区域工作在远程仓库 本地目录 工作区 平时存放项目代码的位置
  • 使用 Grid 进行常见布局

    grid 布局是W3C提出的一个二维布局系统 通过 display grid 来设置使用 对于以前一些复杂的布局能够得到更简单的解决 本篇文章通过几个布局来对对 grid 布局进行一个简单的了解 目前 grid 仅仅只有 Edge使用前缀能