レイアウトする際に、必要なプロパティではありませんが、
デバイス毎に横幅が伸び縮みして、可変する場合に効果があります。
flex-grow,flex-shrink,flex-basis | 伸縮系プロパティ |
---|---|
flex-grow | 初期値: 0 |
flex-shrink | 初期値: 1 |
flex-basis | 初期値: auto |
<ul class="flexbox"> /* container */ <li>flexアイテム</li> /* Item */ <li>flexアイテム</li> /* Item */ <li>flexアイテム</li> /* Item */ </ul>
コンテナー内の余った領域を、各アイテムにどう分配するかの割合。
.flexbox { display: flex; width: 700px; padding: 16px; background-color: #EEE; } li { width: 100px; height: 100px; margin-right: 14px; background-color: palegreen; /* flex-grow: 0; */ }
2番目のFlexアイテムに flex-grow: 1
を設定した。
li { width: 100px; height: 100px; margin-right: 14px; background-color: palegreen; /* flex-grow: 0; */ } li:nth-child(2) { flex-grow: 1; }
2番目のFlexアイテムに flex-grow: 2
を設定し、4番目のFlexアイテムに flex-grow: 1
を設定した。
li { width: 100px; height: 100px; margin-right: 14px; background-color: palegreen; /* flex-grow: 0; */ } li:nth-child(2) { flex-grow: 2; } li:nth-child(4) { flex-grow: 1; }
https://codepen.io/cshool/pen/rQJdbg
https://residence.nikkei.co.jp/
https://www.quantamagazine.org/universal-quantum-phenomenon-found-in-superconductors-20181119/
縮む割合をコンテナー内の余った領域から、その割合をどう分配するか。
コンテナーが小さすぎる場合にのみ効果があります。
<ul class="flexbox"> <li>flexアイテム</li> <li>flexアイテム</li> <li>flexアイテム</li> <li>flexアイテム</li> <li>flexアイテム</li> <li>flexアイテム</li> </ul>
li { width: 100px; height: 100px; margin-right: 14px; background-color: palegreen; /* flex-shrink: 1; */ }
2番目のFlexアイテムに flex-shrink: 0
を設定し、4番目のFlexアイテムに flex-shrink: 4
を設定した。
li { width: 100px; height: 100px; margin-right: 10px; background-color: palegreen; /* flex-shrink: 1; */ } li:nth-child(2) { flex-shrink: 0; } li:nth-child(4) { flex-shrink: 4; }
https://codepen.io/cshool/pen/yQvjNw
flex-shrink: 0;
を指定した場合、どれだけコンテナーが狭くなってもこれ以上は縮まない。
flex-shrink: 2;
以上の数値を指定した場合、その数値の倍速で縮む。
例:
flex-shrink: 4;
→ 4倍の速度で縮む。
Flexアイテムの進行方向に対する width
のようなもの。
flex-direction: column;
で縦ならびになった際は、heightと同じ効果。
覚えにくいと思うので、こういうのがあると頭の片隅に入れておいてください。
li { flex: 0 1 auto; /* grow shrink basis */ }
order | 順番の指定 |
---|---|
0 [default] | |
1 | |
-1 | |
9 |