Grid 布局

192 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情

Grid布局是css解决布局的方案之一。有人说flex是现在布局界的巅峰,弹性布局之下确实好处多多,但出现更早的Grid也并不乏亮点。今天,我将Grid拿来讲讲,并且说说在什么场景下,更好用。

Grid的说明

谈到布局,就一定要把flex拿出来比较下。Grid相比flex而言,更加精确的阐述了行列的概念。它也很好的解决了横平竖直的布局,而flex则只对于其中的某一行或者某一列自适应。也就是用于表格布局的情况下,Grid会更胜一重。 因此,Grid布局下,上下行元素对齐更加容易,而flex则容易依据元素本身造成参差不齐的情况。

Grid学习

知道了它的好处,那就有了学习的动力。这里也同flex一样,要先了解容器和项目。容器是指最外层包裹目标元素的dom---可以想象成Excel中的整个表,而项目则是每个表格中的格子。设置方法也很简单:display:grid或者display:inline-grid就设置好了表。而表的行列数则是通过grid-template-rows、grid-template-columns设置,grid-template-rows的值理论上可以是无限个,类型上有none、flex、percentage、length等等,这里感觉用的最多就是百分比、数值。grid-template-columns的使用与rows的相似,就不一一说明。有了表、行列外,我们还需要gap,因此就有了grid-gap、grid-row-gap、grid-column-gap。这里要注意的是grid-gap是另外两个的缩写,可描述成为两个值,分别对应row、column。例如:grid-gap: 8px 6px; 等价于,分别设置grid-row-gap:8px;grid-column-gap: 6px;
越是强大,属性也就越多。这里还必须要介绍grid-template-areas、grid-area,他们下是一定要成对出现的,前者是表达了表要分为哪几个区,后面的则说明了每个区对应的名字是什么。这里下面会通过代码,向大家展示。 除了以上的,还有grid-auto-flow、rid-row-end、grid-column-start、justify-items、place-items等很多属性,未来几天我用在整理一篇,到时候再详细说明。

Grid实战

使用Grid实现三栏式布局

<section class="grid-three-columns-layout">
    <article class="container">
        <div class="left"></div>
        <div class="center">
            我是用grid实现的三栏布局
        </div>
        <div class="right"></div>
    </article>
</section>
<style>
    .grid-contain {
        display: grid;
        grid-template-rows: 120px;
        grid-template-columns: 20px auto 30px;
        margin-top: 20px;
        width: 100%;
    }

    .container .left {
        background-color: red;
    }

    .container .center {
        background-color: blue;
    }

    .container .right {
        background-color: green;
    }
</style>

结束语

grid看着简单,但在写本文过程中,发现grid要熟练掌握要求大家学习的属性,还是很多的。为了避免大家学习疲劳,决定拆成多篇去说明。希望大家关注点赞评论啊,否则下一篇可能就错过了啊。

工作就像怀孕,当工作太多,肚子太大,想要不加班干完,想要顺利的生下来,简直就和难产一样。