同じコードでフォームをどこにでも配置でき、コンテンツでもサイドバーでもフォームは最適にレイアウトされる。Flexboxの最新のテクニックを使用すると、CSSで明示的に定義しなくても、レイアウトの柔軟性を得らる。
<form>
<input type="text" placeholder="Name">
<input type="email" placeholder="Email Address">
<input type="submit" value="Subscribe">
</form>
form {
display: flex;
flex-wrap: wrap;
}
form > input {
flex: 1 1 10ch;
margin: .5rem;
}
form > input[type="email"] {
flex: 3 1 30ch;
}
flexは、flex-growとflex-shrinkとflex-basisのショートハンド。
- flex-grow: 1;は、全てのflexアイテムは同じサイズになる
- flex-shrink: 1;は、flexアイテムが残りのアイテムと比較してどのくらい縮まるかを指定
- flex-basis: 10ch;は、flexアイテムを10chに指定し、残りは最初の大きさに従う。1ch単位はフォントの「0」文字の幅に相当する
3つのinput要素の初期サイズはflex-basisの値、10ch, 30ch, 10chになり、合計値は50chになる。配置するスペースが50ch以上の場合(アイテムがスペースに収まる場合)は、1行に配置される。
【参考】
https://coliss.com/articles/build-websites/operation/css/4-layouts-form-used-flexbox.html