添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

CSS Flexbox 屬性及用法

Flexbox 是什麼?

早期用 Box model 排版的時候,要用很多種方式來避免畫面跑版,但隨著時代進步,不同的裝置有不同的解析度,若每個裝置都要重新設計版面也太麻煩了!於是 Flexbox 就誕生啦!

Flexbox 解決了早期的排版問題,能夠隨著不同裝置來變化排版,可以自適應不同裝置的長寬稱為響應式布局(RWD)。

網路上有很多解釋 Flexbox 的文章,這裡主要說明 Flexbox 相關的屬性及用法。

開始使用

設定 display:flex; 的元素是 flex container ,其子元素為 flex item

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<style>
.container{
/* parent set display:flex; */
display:flex;
}
</style>

<body>
<!-- parent is flex container -->
<div class="container">
<!-- chird is flex item -->
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</body>

屬性介紹

下面屬性如果是 預設值 ,會帶有⚙齒輪符號

flex container 的相關屬性

設定在 display:flex; 同一個元素內的屬性

flex-direction 方向

在畫面上要橫的還是直的

row ⚙ 橫的,由左到右的
row-reverse 橫的,由右到左的
column 直的,由上到下的
colume-reverse 直的,由下到上的

flex-wrap 換行

全部item的寬度如果超過 container 的寬度,要不要換行

nowrap ⚙ 不換行
wrap 要換行。當 flex container 的寬度沒辦法容納所有 flex item,就把 flex item 換行

justify-content 水平對齊

決定 item 之間的水平對齊方式

flex-start ⚙ 齊頭
flex-end 齊尾
center 置中
space-between 頭尾對齊,item 均分剩餘寬度
space-around 頭尾分一個寬度,item 均分剩餘寬度
space-evenly item均分剩餘寬度

align-items 垂直對齊

決定 item 之間的垂直對齊方式

normal ⚙ 基本上跟stretch一樣
flex-start 齊頭
flex-end 齊尾
center 置中
stretch 如果 item 沒有設定 height,就把item 拉伸到跟容器一樣高

flex item 的相關屬性

設定在 子元素 的屬性

flex-grow 增長係數

有剩餘空間的時候怎麼分配

0 ⚙ 不影響 width
1 flex item width 占用1倍的剩餘空間,數字越大佔越多

flex-grow 怎麼分配剩餘空間

flex-shrink 收縮係數

空間不夠的時候怎麼分配

0 flex item width 不要收縮,會直接爆出去
1 ⚙ flex item width 有超出空間,就縮至超出空間的1倍。數字越大,收縮的比例越高

flex-shrink 怎麼收縮不夠的空間

flex-basis 基本寬度

跟 width 很像,但如果有設定 flex-basis 的話,優先度會高於 width

auto ⚙ 內容決定寬度
150px width 設為 150px。要注意的是,如果 flex-direction: column; 的時候,flex-basis就不是 width 而是 hight 。

設定 flex item 的寬

flex 縮寫屬性

1
2
3
4
5
6
7
/* 順序 grow shrink basis */
flex: 0 1 150px;

/* flex:0 1 150px; 等於下列 */
flex-grow:0;
flex-shrink:1;
flex-basis:150px;

Flexbox 怎麼設定長寬

設定 flex item 的寬