Grid 為 CSS 最新 Layout 方式,其思維有別於 Flexbox,可完全在父層設定。
Version
CSS 3
Grid
產生 2 x 3 排版。
<template lang='pug'>
section
div 1
div 2
div 3
div 4
div 5
div 6
</template>
<style lang='sass' scoped>
section
display: grid
grid-template-columns: auto auto
</style>
第 2 行
section
div 1
div 2
div 3
div 4
div 5
div 6
只是 6 個 div
,並在父層有 section
。
12 行
section
display: grid
grid-template-columns: auto auto
設定父層 section
style:
display: grid
:設定子層使用 Gridgrid-template-columns: auto auto
:設定 2 個 column,且每個 column 的寬度都是auto
,會自動瓜分水平寬度
Flexbox
功能不變,但使用 Flexbox 改寫。
<template lang='pug'>
section
.item 1
.item 2
.item 3
.item 4
.item 5
.item 6
</template>
<style lang='sass' scoped>
section
display: flex
flex-wrap: wrap
.item
width: 50%
</style>
第 2 行
section
.item 1
.item 2
.item 3
.item 4
.item 5
.item 6
一樣是 6 個 <div>
,在父層有 section
,且每個子層都有 .item
。
13 行
section
display: flex
flex-wrap: wrap
設定父層 section
style:
display: flex
:設定子層使用 Flexboxflex-wrap: wrap
:設定超過寬度會自動換列
16 行
.item
width: 50%
設定子層 item style:
width: 50%
:設定每個 item 寬度為父層50%
Conclusion
- Grid 可完全在父層設定,但 Flexbox 則必須依靠子層配合