Flexboxは
display: flex;
から始まります。下のサンプルでは、よくありがちな「横置きメニュー」と「伸縮可能なカラムを持つテーブル」を実現しています。
<html> <style> /* general horizontal menu */ nav > ul { display: flex; padding: 0px; background-color: gray; } nav > ul > li { min-width: min-content; /* Prevent items from getting too small for their content. */ padding: 4px; list-style-type: none; background-color: cyan; } nav > ul > #login { margin-left: auto; } /* row */ div.row { display: flex; } div.row > .fixCol { width: 100px; background-color: yellow; } div.row > .flexCol1 { flex: 1.0; background-color: green; } div.row > .flexCol2 { flex: 2.0; background-color: lightgreen; } </style> <body> <nav> <ul> <li><a href="/about">About</a> <li><a href="/projects">Projects</a> <li><a href="/interact">Interact</a> <li id='login'><a href="/login">Login</a> </ul> </nav> <div class="row"> <div class="fixCol">fixCol</div> <div class="flexCol1">flexCol1</div> <div class="flexCol2">flexCol2</div> </div> <div class="row"> <div class="fixCol">fixCol</div> <div class="flexCol1">flexCol1</div> </div> <div class="row"> <div class="fixCol">fixCol</div> <div class="flexCol1">flexCol1</div> <div class="fixCol">fixCol</div> </div> </body> </html>
注目
上の
flex: 1.0;
はカラム幅の比率を表しています。例えば一つの行に flex:1.0 と flex:2.0 なカラムが一つづつ存在するとすれば、カラム幅は1:2の比率でレイアウトされます。サンプルを実行するとこのように表示されます。
画面の幅を変えてみましょう。fixColは固定されたままですが、flexCol1とflexCol2は画面幅にあわせて伸縮します。
flexboxを使えばスタイルシートがかなりスッキリしますね。
0 件のコメント:
コメントを投稿