在过去的几个星期里,我开始看到基于 CSS Grid 的布局框架和栅格系统的出现。我们惊讶它为什么出现的这么晚。但除了使用 CSS Grid 栅格化布局,我至今还没有看到任何框架能提供其他有价值的东西。他们沉醉于模仿过去的做法,而不是着眼于未来。这使得发展受到限制。其中一个常见的问题就是,这些框架仍需要在标记语言中使用行包装器。

为什么 Grid 有些不同?

Grid 是一个栅格系统。它允许你在 CSS 中定义列和行,而不需要在标记语言中定义它们。你不需要其他工具帮助你实现一个看起来像栅格的效果,实际上它就是栅格!

传统的设置布局的方法需要使用行包装器进行标记的原因是,我们是通过为对象分配宽度的方式来伪造网格的。然后我们通过调整对象布局,从而在网格间制造出间隙。在一个基于 float 的网格布局中,你需要将每行元素包装起来并清除浮动,以使下一行中的内容不浮动。在一个基于 Flex 的网格中,需要你对每行定义新的 Flex 容器,或者你需要恰当灵活地使用包装器,flex-basismargin 来获得相同的效果。

Grid 不需要这些行包装器,因为你已经定义了相应的行轨迹和用于对齐的线条。且不会有网格内的内容溢出到其他行的危险。 如果你定义了行包装器,那么每一行都将成为一个新的一维网格布局。如果你将自己限制在一个维度上,那使用 Grid 并没有比 Flexbox 更好。

基于 Grid 的布局框架有什么值得借鉴的地方?

框架这个词在这不是太恰当,但是我认为在一个团队中,一套 Sass helper 在规范化使用 Grid 方面是很有帮助的。如果你已经探究了相关的规范,你会发现要实现相同效果,会有很多种不同的方法。你可以命名区域,使用行号或行名。你可能倾向于明确给出所有元素的位置,或是尽可能依赖于自动布局。如果团队中的每个人都使用不同的方法,最终将使得编写出来的代码难以阅读和维护。

对于代码向后兼容也是如此。如果你已经决定如何处理不支持 Grid 布局的浏览器,某些工具可以帮助你确保你所做的决定能够在不同的地方以相同的效果展现出来。此外,这种方法在项目开发层面上比直接导入其他公司的方法更有用。

在你开始使用新的“Grid Layout 框架”前,请确保你首先了解 Grid 网格布局的工作原理。知道你为什么要创建一个抽象,它提供什么以及使用它的副作用是什么。

拥抱新的可能

我刚刚从 Patterns Day 回来,并且 我的一张幻灯片在 Twitter 上被提及了好几次

“Flexbox 与 Grid 有很大区别。如果你先使用了旧的方法来进行开发,那你将失去使用 Flexbox 和 Grid 进行创新的可能”。

上面这张 PPT 的背景是处理老版本的浏览器,也就是处理浏览器兼容问题。我鼓励人们首先考虑新的浏览器。要开始使用良好的标记, 首先要为那些支持 Grid 和 Flexbox 等的浏览器进行设计。如果你从旧版本的浏览器开始,会让他们的性能成为限制你能力的因素。

创建规范的标记,整理那些过时了的没有必要的元素。使用 Grid 和其他新方法来设计你的网站。然后, 你可以通过提供一些更简单的东西, 来解决不支持新功能的浏览器的兼容问题。也许你的 Grid 布局设计使用了跨行等设计方案,这种效果很难在不支持额外标记方法的旧版本浏览器中实现精准的布局。你可以使用 flexbox 做向后兼容,创建一个没有跨行的布局方案。虽然这样不那么整洁,但也完全可以使用,而且不需要为数量在逐渐减少的那部分用户来增加额外标记。

你可以 点击这来看相关示例。这是我发布在 Grid by Example 上的数个带有向后兼容方案的模式之一。

如果把自己限制在过去,例如在旧的浏览器中只能使用 Grid 的部分功能,或使用那些自身受限的框架,那你就会失去使用 Grid 时产生创意的可能。既然这样又何必使用 Grid?你也可以只使用旧的代码方案,但这的确很可惜。

如果你在寻找栅格框架时找到本文,那你找对地方啦!学习并使用 CSS Grid 布局,可能你没有必要再找除此之外的材料了。

欢迎大家在评论区留下你的想法和感受!


欢迎大家关注知乎专栏:全栈成长之路

文章保质保量 (づ ̄3 ̄)づ╭?~

也欢迎大家加入学习交流QQ群:637481811

本文首发于我的 个人网站 LeviDing ,更多内容欢迎关注我的个人网站。
欢迎扫描上方二维码关注 公众号: LeviDing 订阅实时动态。

你不需要基于 CSS Grid 的栅格布局系统的更多相关文章

  1. CSS Grid基于网格的二维布局系统(详细教程)

    .grid-wrap{ display: inline-flex; padding: 20px; background: #f4f4f4; word-break: initial; } .handle ...

  2. day30—使用Flexbox和CSS Grid实现高效布局实践

    转行学开发,代码100天——2018-04-15 (今天是代码开发的第30天,但是代码记录有些滞后,尽快补上.日后要严格执行,避免学习进度和内容相对滞后.) 今天,记录“前端大全”里分享的一篇关于利用 ...

  3. Bootstrap3.0 栅格系统背后的精妙魔法(Bootstrap3.0的栅格布局系统实现原理)

    这个标题取的有点奇怪,怪我翻译的有问题吧.英文学平有限,有道词典和google翻译齐上阵是必须的.还好翻译的不是小说,对于技术文章,还是能勉强翻过来的. 本文主要讲解了Bootstrap3.0的栅格布 ...

  4. Bootstrap3.0的栅格布局系统实现原理

    这个标题取的有点奇怪,怪我翻译的有问题吧.英文学平有限,有道词典和google翻译齐上阵是必须的.还好翻译的不是小说,对于技术文章,还是能勉强翻过来的. 本文主要讲解了Bootstrap3.0的栅格布 ...

  5. Bootstrap栅格布局系统的特点

    栅格布局系统的特点: (1)所有的行必须放在容器中: .container或.container-fluid (2)分为多行(row),一行中平均分为12列(col) (3)网页内容只能放在列(col ...

  6. CSS:谈谈栅格布局

    检验前端的一个基本功就是考查他的布局.很久之前圣杯布局风靡一时,这里就由圣杯布局开始,到最流行的bootstrap栅格布局. 圣杯布局 圣杯布局是一种三列布局,两边定宽,中间自适应: * { box- ...

  7. 【转及总结】Bootstrap 框架 栅格布局系统底层设计原理

    如果你是初次接触Bootstrap,你一定会为它的栅格布局感到敬佩.事实上,这个布局系统提供了一套响应式的布局解决方案. 既然这么好用,那他是如何用CSS来实现的呢? 我特意去Bootstrap官方下 ...

  8. grid栅格布局

    前面的话 Grid布局方式借鉴了平面装帧设计中的格线系统,将格线运用在屏幕上,而不再是单一的静态页面,可以称之为真正的栅格.本文将详细介绍grid布局 引入 对于Web开发者来说,网页布局一直是个比较 ...

  9. 震惊!很多人都不知道 CSS Grid 框架早就有了!

    前言 写作本文起源于知乎的一个问题:[CSS Grid 布局那么好,为什么至今没有人开发出基于 Grid 布局的前端框架呢?] 这篇文章拖沓了两个月,是因为真的不知道从哪里说好.这个问题的所有回答几乎 ...

随机推荐

  1. windows下cuda、cudnn以及pytorch的安装

    一.在anaconda下配置cuda.cudnn以及pytorch环境 1.打开Anaconda Prompt,输入 conda create -n pytorch python=3.8        ...

  2. mysql索引技术名词1-5

    目录 索引技术名词 1.回表 2.覆盖索引 3.最左匹配原则 4.索引下推 5.谓词下推 索引技术名词 1.回表 注意: 1.如果依靠主键查询,叶子结点直接存储数据----主键B+树 2.如果依靠其他 ...

  3. Python:time与datetime

    学习自: (10条消息) Python的time和datetime的简单使用_慢行的蜗牛-CSDN博客 Python之 time 与 datetime模块 - 叶灵溪&叶仙樱 - 博客园 py ...

  4. docker学习笔记(4)——Dockerfile

    参考资料: 1.官网教程:https://docs.docker.com/engine/reference/builder/ (官网教程,稍后我做一下总结和翻译输出到本文) 2.官网练习推荐:http ...

  5. JZ-010-矩形覆盖

    矩形覆盖 题目描述 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形.请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 题目链接: 矩形覆盖 代码 /** * 标题:矩形覆盖 ...

  6. 微信小程序获取当前的时间戳

    js文件中进行计算var timestamp = Date.parse(new Date()); timestamp = timestamp / 1000; console.log(timestamp ...

  7. think php 多条件检索+自带分页+多条件搜索标红分页

    //视图<form action="/homework/homework/index" method="get"> <input type=& ...

  8. win server 2012下安装IIS 8后配置ASP网站的注意事项

    1,安装IIS时,如果你用不到asp.net 在web下的应用程序开发只需要勾选ASP这一项就可以. 2,IIS测试成功后,需要在你设定的主目录添加权限,找到你的主目录-属性-安全-编辑,添加Ever ...

  9. LGP4001题解

    题目大意 给定一张无向图,需要消耗代价才能使一条边被[数据删除],求使这张图不连通的最小代价. 一看就是最小割的应用啊... 从 \(u\) 到 \(v\),边权为 \(w\) 的边,建两条:一条从 ...

  10. python-用代码实现队列,处理斐波那契数列

    队列在进行数据操作时必须遵循"先进先出(Firstin Firstout,FIFO)"的原则,这一特点决定了队列的基本操作需要在其两端进行 队列(Queue)的基本操作通常在队列的 ...