9.1 屬性 flex-grow
在Flexbox裡,有很多工具可以用來管理Flex容器內元素之間的空間分配。
屬性flex-grow
、flex-shrink
和flex-basis
在控制Flex元素在不同條件下的大小和行為上扮演了關鍵角色。現在我們將詳細探討這些屬性和它們的使用方法。
屬性flex-grow
決定了Flex元素增加大小以占據容器中可用空間的能力。flex-grow
的值是個係數,指出元素相對於其他Flex元素可以增長的比例。
值:
- 整數或小數值
- 預設值: 0 (元素不增長)
使用範例:
CSS
.container {
display: flex;
border: 2px solid #000;
padding: 10px;
width: 500px;
}
.item {
background-color: #3498db;
color: white;
padding: 10px;
margin: 5px;
}
.grow-1 {
flex-grow: 1;
}
.grow-2 {
flex-grow: 2;
}
HTML
<div class="container">
<div class="item grow-1">元素 1</div>
<div class="item grow-2">元素 2</div>
<div class="item grow-1">元素 3</div>
</div>
代碼說明:
.grow-1
: 這些元素有flex-grow: 1;
,允許它們均勻增長-
.grow-2
: 這個元素有flex-grow: 2;
,這讓它能夠比具有flex-grow: 1;
的元素增長兩倍
9.2 屬性 flex-shrink
屬性flex-shrink
決定了Flex元素在容器空間有限時縮小的能力。flex-shrink
的值是個係數,指出元素相對於其他Flex元素可以縮小的比例。
值:
- 整數或小數值
- 預設值: 1 (元素可以縮小)
使用範例:
CSS
.container {
display: flex;
border: 2px solid #000;
padding: 10px;
width: 300px;
}
.item {
background-color: #3498db;
color: white;
padding: 10px;
margin: 5px;
width: 150px;
}
.shrink-0 {
flex-shrink: 0;
}
.shrink-1 {
flex-shrink: 1;
}
HTML
<div class="container">
<div class="item shrink-0">元素 1</div>
<div class="item shrink-1">元素 2</div>
<div class="item shrink-1">元素 3</div>
</div>
代碼說明:
.shrink-0
: 這個元素有flex-shrink: 0;
,不允許它縮小.shrink-1
: 這些元素有flex-shrink: 1;
,允許它們在需要時縮小
9.3 屬性 flex-basis
屬性flex-basis
決定了Flex元素在分配自由空間之前的初始大小。它可以以不同單位設置,如像素、百分比和其他。
值:
- 多種單位的長度 (
px
,%
,em
等) - 預設值:
auto
(大小由內容決定)
使用範例:
CSS
.container {
display: flex;
border: 2px solid #000;
padding: 10px;
}
.item {
background-color: #3498db;
color: white;
padding: 10px;
margin: 5px;
}
.basis-auto {
flex-basis: auto;
}
.basis-100px {
flex-basis: 100px;
}
.basis-50percent {
flex-basis: 50%;
}
HTML
<div class="container">
<div class="item basis-auto">元素 1</div>
<div class="item basis-100px">元素 2</div>
<div class="item basis-50percent">元素 3</div>
</div>
代碼說明:
.basis-auto
: 這個元素有flex-basis: auto;
,意思是它的大小由內容決定.basis-100px
: 這個元素有固定的初始大小為100像素.basis-50percent
: 這個元素的初始大小是容器寬度的50%
9.4 使用屬性
屬性flex
是一個簡寫,可以設置flex-grow
、flex-shrink
和flex-basis
。
它允許在一個屬性中管理所有三個空間分配的方面。
語法:
.container {
flex: [flex-grow] [flex-shrink] [flex-basis];
}
使用範例:
CSS
.container {
display: flex;
border: 2px solid #000;
padding: 10px;
}
.item {
background-color: #3498db;
color: white;
padding: 10px;
margin: 5px;
}
.flex-1 {
flex: 1 1 auto;
}
.flex-2 {
flex: 2 1 100px;
}
.flex-3 {
flex: 1 0 50%;
}
HTML
<div class="container">
<div class="item flex-1">元素 1</div>
<div class="item flex-2">元素 2</div>
<div class="item flex-3">元素 3</div>
</div>
代碼說明:
-
.flex-1
: 這個元素有flex: 1 1 auto;
,意味著它可以均勻的增長和縮小,初始大小由內容決定 -
.flex-2
: 這個元素有flex: 2 1 100px;
,意味著它能比具有flex-grow: 1;
的元素增長兩倍,能夠縮小且有初始大小100像素 -
.flex-3
: 這個元素有flex: 1 0 50%;
,意味著它能夠增長但不能縮小,初始大小是容器寬度的50%
GO TO FULL VERSION