CSS flex-shrink 屬性

CSS 參考手冊 CSS 參考手冊


實例

A, B, C 設置 flex-shrink:1, D , E 設置為 flex-shrink:2:

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>IT研修(xuhuhu.com)</title> <style>
#content { display: flex; width: 500px; } #content div { flex-basis: 120px; border: 3px solid rgba(0,0,0,.2); } .box { flex-shrink: 1; } .box1 { flex-shrink: 2; }
</style> </head> <body> <p>div 總寬度為 500px, flex-basic 為 120px。</p> <p>A, B, C 設置 flex-shrink:1。 D , E 設置為 flex-shrink:2</p> <p>D , E 寬度與 A, B, C 不同</p> <div id="content"> <div class="box" style="background-color:red;">A</div> <div class="box" style="background-color:lightblue;">B</div> <div class="box" style="background-color:yellow;">C</div> <div class="box1" style="background-color:brown;">D</div> <div class="box1" style="background-color:lightgreen;">E</div> </div> </body> </html>

實例解析:

flex-shrink的默認值為1,如果沒有顯示定義該屬性,將會自動按照默認值1在所有因數相加之後計算比率來進行空間收縮。

本例中A、B、C 顯式定義了 flex-shrink 為 1,D、E 定義了 flex-shrink 為 2,所以計算出來總共將剩餘空間分成了 7 份,其中 A、B、C 占 1 份,D、E 占 2 份,即1:1:1:2:2

我們可以看到父容器定義為 500px,子項被定義為 120px,子項相加之後即為 600 px,超出父容器 100px。那麼超出的 100px 需要被 A、B、C、D、E 消化 通過收縮因數,所以加權綜合可得 100*1+100*1+100*1+100*2+100*2=700px

於是我們可以計算 A、B、C、D、E 將被移除的溢出量是多少:
A 被移除溢出量:(100*1/700)*100,即約等於14px
B 被移除溢出量:(100*1/700)*100,即約等於14px
C 被移除溢出量:(100*1/700)*100,即約等於14px
D 被移除溢出量:(100*2/700)*100,即約等於28px
E 被移除溢出量:(100*2/700)*100,即約等於28px

最後A、B、C、D、E的實際寬度分別為:120-14=106px, 120-14=106px, 120-14=106px, 120-28=92px,120-28=92px,此外,這個寬度是包含邊框的。


流覽器支持

表格中的數字表示支持該屬性的第一個流覽器的版本號。

緊跟在 -webkit-, -ms- 或 -moz- 後的數字為支持該首碼屬性的第一個版本。

屬性
flex-shrink 29.0
21.0 -webkit-
11.0
10.0 -ms-
28.0
18.0 -moz-
9.0
6.1 -webkit-
17.0

定義和用法

flex-shrink 屬性指定了 flex 元素的收縮規則。flex 元素僅在默認寬度之和大於容器的時候才會發生收縮,其收縮的大小是依據 flex-shrink 的值。

注意:如果元素不是彈性盒對象的元素,則 flex-shrink 屬性不起作用。

默認值: 1
繼承:
可動畫化: 是。請參閱 可動畫化(animatable)
版本: CSS3
JavaScript 語法: object.style.flexShrink="5"


CSS 語法

flex-shrink: number|initial|inherit;

屬性值

描述
number 一個數字,規定專案將相對於其他靈活的專案進行收縮的量。默認值是 1。
initial 設置該屬性為它的默認值。請參閱 initial
inherit 從父元素繼承該屬性。請參閱 inherit


相關文章

CSS 參考手冊:flex 屬性

CSS 參考手冊:flex-basis 屬性

CSS 參考手冊:flex-direction 屬性

CSS 參考手冊:flex-flow 屬性

CSS 參考手冊:flex-grow 屬性

CSS 參考手冊:flex-wrap 屬性


CSS 參考手冊 CSS 參考手冊