flexbox

flexboxレイアウトモードは、CSSでレイアウトを作るにはどうすべきかを、改めて定義し直したものだ。残念ながら、最近でも仕様が大きく変えられている。そのような背景もあり、異なるブラウザで異なる実装がなされている。さらに、2つの例を紹介したい。そうすれば、何ができるか分かるだろう。これらの例は、現在の最新の仕様を適用しているいくつかのブラウザで動作する。

周りには、古いフレックスボックスの仕様や実装に関する、本やWeb記事があふれている。だから、フレックスボックスについて学びたければ、そのリソースが現在のものかどうか特定するために、ここから始める といいだろう。私が書いた最新のフレックスボックスの仕様に則った詳細記事もある。

フレックスボックスを使うと、もっといろんなことができる。以下に示す例は、君にアイディアを与えるためのほんの一例にすぎない:

フレックスボックスで単純なレイアウト

.container {
  display: -webkit-flex;
  display: flex;
}
nav {
  width: 200px;
}
.flex-column {
  -webkit-flex: 1;
          flex: 1;
}
<div class="container">
<div class="flex-column">
<section>

フレックスボックスはとても簡単!

</section>
<section>

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio, vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa. Fusce luctus vestibulum augue ut aliquet. Mauris ante ligula, facilisis sed ornare eu, lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue. Nunc sagittis dictum nisi, sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit.

</section>
</div>

フレックスボックスで楽しいレイアウト

.container {
  display: -webkit-flex;
  display: flex;
}
.initial {
  -webkit-flex: initial;
          flex: initial;
  width: 200px;
  min-width: 100px;
}
.none {
  -webkit-flex: none;
          flex: none;
  width: 200px;
}
.flex1 {
  -webkit-flex: 1;
          flex: 1;
}
.flex2 {
  -webkit-flex: 2;
          flex: 2;
}
<div class="initial">

空きスペースがあれば、私は200pxだ。 無ければ、私は100pxに縮む。でも、それより小さくはならない。

</div>
<div class="none">

私は、何が起ころうと、いつも200pxだ。

</div>
<div class="flex1">

私は、幅1/3一杯に広がる。

</div>
<div class="flex2">

私は、幅2/3一杯に広がる。

</div>

フレックスボックスで中央寄せ

.vertical-container {
  height: 300px;
  display: -webkit-flex;
  display:         flex;
  -webkit-align-items: center;
          align-items: center;
  -webkit-justify-content: center;
          justify-content: center;
}
<div class="vertical-container">
<div>

ついに、簡単に、CSSを使って、上下中央寄せにしている!

</div>
</div>
  • Creative Commons License