傳統會將 Column 寬度設定為 %
使其依比例顯示,但若設定 column-gap
後,則要改用 fr
才能依比例顯示。
Version
CSS 3
repeat(4, 25%)
若想產生 4 個 column 平分水平寬度,直覺會將每個 column 寬度設定為 25%
。
<template lang='pug'>
section
div 1
div 2
div 3
div 4
div 5
div 6
div 7
div 8
</template>
<style lang='sass' scoped>
section
display: grid
grid-template-columns: repeat(4, 25%)
</style>
14 行
section
display: grid
grid-template-columns: repeat(4, 25%)
設定父層 section
style:
display: grid
:設定子層使用 Gridgrid-template-columns: repeat(4, 25%)
:每個 column 寬度設定為25%
,可將水平寬度 4 等分
column-gap
若設定了 column-gap
,會發現對 column 設定 25%
並無法對水平寬度 4 等分。
<template lang='pug'>
section
div 1
div 2
div 3
div 4
div 5
div 6
div 7
div 8
</template>
<style lang='sass' scoped>
section
display: grid
grid-template-columns: repeat(4, 25%)
column-gap: 50px
</style>
14 行
section
display: grid
grid-template-columns: repeat(4, 25%)
column-gap: 50px
設定父層 section
style:
display: grid
:設定子層使用 Gridgrid-template-columns: repeat(4, 25%)
:每個 column 寬度設定為25%
,可將水平寬度 4 等分column-gap: 50px
:設定 column 間的 gap 為50px
可發現當設定
column-gap
時,使用%
並無法水平均分 column
repeat(4, 1fr)
儘管設定 column-gap
,每個 column 依然相等。
<template lang='pug'>
section
div 1
div 2
div 3
div 4
div 5
div 6
div 7
div 8
</template>
<style lang='sass' scoped>
section
display: grid
grid-template-columns: repeat(4, 1fr)
column-gap: 50px
</style>
14 行
section
display: grid
grid-template-columns: repeat(4, 1fr)
column-gap: 50px
設定父層 section
style:
display: grid
:設定子層使用 Gridgrid-template-columns: repeat(4, 1fr)
:每個 column 寬度從25%
設定為1fr
,可將水平寬度 4 等分column-gap: 50px
:設定 column 間的 gap 為50px
50% repeat(3, 1fr)
fr
也能與 %
混合使用。
<template lang='pug'>
section
div 1
div 2
div 3
div 4
div 5
div 6
div 7
div 8
</template>
<style lang='sass' scoped>
section
display: grid
grid-template-columns: 50% repeat(3, 1fr)
column-gap: 50px
</style>
14 行
section
display: grid
grid-template-columns: 50% repeat(3, 1fr)
column-gap: 50px
設定父層 section
style:
display: grid
:設定子層使用 Gridgrid-template-columns: 50% repeat(3, 1fr)
:50%
與repeat(3, 1fr)
可混合使用,column 1 佔50%
,其餘 3 個 column 則水平均分column-gap: 50px
:設定 column 間的 gap 為50px
50% 3fr 2fr 1fr
除了可設定 %
,亦可設定 fr
相對比例。
<template lang='pug'>
section
div 1
div 2
div 3
div 4
div 5
div 6
div 7
div 8
</template>
<style lang='sass' scoped>
section
display: grid
grid-template-columns: 50% 3fr 2fr 1fr
column-gap: 50px
</style>
14 行
section
display: grid
grid-template-columns: 50% 3fr 2fr 1fr
column-gap: 50px
設定父層 section
style:
display: grid
:設定子層使用 Gridgrid-template-columns: 50% 3fr 2fr 1fr
:%
與fr
可混合使用,且可設定fr
相對比例column-gap: 50px
:設定 column 間的 gap 為50px
Conclusion
fr
與%
可搭配使用,尤其在使用column-gap
,fr
可使 browser 自動重新計算 column 寬度