好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

CSSGrid布局指南_html/css_WEB-ITnose

简介

CSS Grid布局 (又名"网格"),是一个基于二维网格布局的系统,主要目的是改变我们基于网格设计的用户接口方式。如我们所知,CSS 总是用于网页的样式设置,但它并没有起到很好的作用。刚开始的时候我们使用表格( table ),然后使用浮动( float )、 定位( position )和内联块( inline-block ),但所有这些方法本质上来讲都是hacks,存留了很多需要实现的重要功能问题(例如,垂直居中)。虽然Flexbox可以起到一定的补救作用,但是它只可以实现简单的一维布局,并不适用于复杂的二维布局(实际上 Flexbox 和 Grid 可以一起结合使用起到最佳效果)。网格是 CSS 第一次专门创建的模块,用来解决我们之前在制作网站时使用hacks处理布局问题。

这里有两件事情启发我创建本指南。第一个是 Rachel Andrew 的令人敬畏的书-- 为 CSS Grid 布局做好准备 。这本书很详尽明确的的介绍了Grid,如果你想很好的掌握Grid的基础知识,我强烈建议你去购买。另外一个很大的灵感来自于 Chris Coyier 的--Flexbox完整指南,这本书是我了解Flebox的一个很优秀的资源。这里,我还想补充一句,当你使用谷歌搜索"flexbox"时,会出现很多类似的资源,但是为什么不直接利用最好的资源呢?

我书写此指南的目的是基于目前最新版本,规范其网格概念。所以我不会再次提及过时的 IE 语法,并且随着规范的成熟,我会尽力定期更新此指南。

基础知识与浏览器支持

Grid 的入门是很容易的。你只需要定义一个容器元素并设置 display:grid ,使用 grid-template-columns 和 grid-template-rows 属性设置网格的列与 行的大小,然后使用 grid-column 和 grid-row 属性将其子元素放入网格之中。与flexbox类似,网格项的源顺序无关紧要。为了更好地使你的网格与媒体查询相结合使用,你可以在 CSS 中任意放置。想象一下你定义的整个页面布局,然后如果想要完全重新布局以适应不同的屏幕宽度,这时仅仅使用几行 CSS 代码就可以实现。Grid是曾经介绍过的最强大 CSS 模块之一。

关于 Grid 一件很重要的事情就是它现在还不适用于项目使用。目前还处于 W3C 的工作草案 之中,并且默认情况下,还不被所有的浏览器所支持。Internet Explorer 10 和 11 已经可以实现支持,但也是利用一种过时的语法实现的。现在出于示例演示,我建议你使用启用了特殊标志的 Chrome, Opera 或者 Firefox 。在 Chrome,导航到 chrome://flags 并启用" web 实验平台功能"。该方法同样适用于 Opera ( opera://flags )。在Firefox中,启用 layout.css.grid.enabled 标志。

这里有一张浏览器支持情况的表格(之后我会继续更新):

除了Microsoft,浏览器厂商似乎想要等到Grid规范成熟后再加以推广。这是一件好事,因为这意味着我们就不需要担心学习多个语法。

等待 Grid 的使用,只是时间的问题。但是现在你需要开始学习它了。

重要术语

在深入研究Grid之前,我们需要理解其相关术语概念。因为这里涉及到的术语在概念上都有点类似,如果你没有首先记住Grid规范中的相关定义,你就会很容易将其与另一个概念相混淆。但是不需要担心,这里的属性并不是很多。

网格容器(Grid Container)

当一个元素设置 display: grid 属性时,它就会成为所有网格项(Grid Items)的父元素。在下面的示例中, container 就是网格容器。

查看更多关于CSSGrid布局指南_html/css_WEB-ITnose的详细内容...

  阅读:37次