關於
歡迎來到網頁工程C工作坊!工作坊的主要目的是為大家提供一些有關網頁設計及開發等等的熱門資訊,希望大家可以將資訊用於自己的作品上,以及能啟發大家的創作靈感!

推介開發工具:VS Code
聯絡

電郵:admin@chedevelopment.com

Facebook:http://fb.me/CheDevelopmentWorkshop

CodePen:https://codepen.io/chedevelopment

關於 聯絡
CSS (18)Flexbox (11)Flexbox Item (5)flex-basis (1)
相關內容
Flexbox 進階篇 01Flexbox 進階篇 02Flexbox 進階篇 03Flexbox 進階篇 05
Flexbox 進階篇 04

進階篇 02 及 03 中提到,Flexbox 中的 item 能按自定比率放大及縮小,為了更好地控制 item 大小的變化, 可以為個別 item 加入 flex-basis 設定,給它的大小定一個基本數值。看看以下例子:

HTML
<div class="container">
    <div class="item one">item 1</div>
    <div class="item two">item 2</div>
    <div class="item three">item 3</div>
</div>
CSS
.container {
    display:flex;
    flex-direction: row;
    height:250px;
    background-color:cornflowerblue;
    padding:10px;
}
 
.item {
    padding:10px;
    margin:10px;
    text-align:center;
    background-color:lightgreen;
}
 
.one {
    flex-basis: 150px;
}

item1 有設定 flex-basis: 150px,意思是在無需要放大或縮小的情況下,大小就是 150px(這個例子是寬度)。

將 flex-basis 結合 flex-grow 及 flex-shrink 一同使用時,就可以更好地控制放大縮小的情況。看看以下例子:

CSS
.one {
    flex-basis: 150px;
    flex-grow: 1;
}
 
.two {
    flex-grow: 2;
}
 
.three {
    flex-grow: 1;
}

item1 及 item3 都同樣有 flex-grow: 1 的設定,但因 item1 的基數為 flex-basis: 150px,所以在相同放大比率的同時,還會額外比 item3 有 150px 的寬度增加。

item2 的設定為 flex-grow: 2,即是放大比率比 item3 及 item1 多一陪,但因為沒有基數設定,結果在這例子的情況下 item2 比 item3 大,但比 item1 小。

由於 flex-grow, flex-shrink 及 flex-basis 會經常一起使用,CSS 有一個便捷的寫法,就是使用 flex 設定。留意以下不同參數的用法有不同意思:

flex: 1 0 200px 代表 flex-grow: 1, flex-shrink: 0, flex-basis: 200px

flex: 2 代表 flex-grow: 2

flex: 100px 代表 flex-basis: 100px

flex: 2 3 代表 flex-grow: 2, flex-shrink: 3

flex: 1 100px 代表 flex-grow: 1, flex-basis: 100px