天天看點

Grid 布局Grid的說明Grid學習Grid實戰結束語

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實戰

<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>
           

結束語