京都のNPO法人 CRA(クリエイター育成協会)が発信するブログです。Web業界、Webデザイナー・Webプログラマー・Webマーケターの育成。

お問い合わせ
075-353-3711 受付時間:10:00〜18:00(土日・祝日除く)
menu close

CRAブログ- Web/IT・教育・福祉業界の情報を、スタッフ&インターン生が配信中

display: flex;を使ったレイアウトをしてみよう

2015年11月25日工藤
Pocket

【こちらの記事は、約4分程でお読みいただけます。】

こんにちは、水曜日のブログ担当の工藤です。

今日は、floatを使わない横並びのレイアウトについて解説していきたいと思います。

flex

リキッドレイアウトを実装するには、flaotを使わなければ出来ませんでした。
floatを使うと、floatをクリアしないとfloatのあとのレイアウトが崩れたりする原因となっていました。
しかし、flexを使うとfloatより柔軟に対応できるようになります。

使い方

<div class="flex">
  <div class="flex_item">1</div>
  <div class="flex_item">2</div>
  <div class="flex_item">3</div>
</div>
.flex_item{
  color: #fff;
  background: #045;
  padding: 10px;
  border-radius: 10px;
  margin: 10px;
}

fl01

このように横並びにっている要素がある時、flexを使うには内装している親のブロックにdisplay: flex;を記述します。

.flex{
  display: flex;
}

fl02
横並びになりました。簡単ですね。

justify-content

justify-contentプロパティを使うと要素の間や表示位置をカスタマイズできます。


justify-content: space-between;

均等揃え。

.flex{
  display: flex;
  justify-content: space-between;
}

justify-content: space-around;

均等中央揃え。betweenの違いは、左右に隙間が入ることです。

.flex{
  display: flex;
  justify-content: space-around;
}

fl07


justify-content: center;

中央揃え

.flex{
  display: flex;
  justify-content: center;
}

fl04


justify-content: flex-end;

右端揃え

.flex{
display: flex;
justify-content: flex-end;
}

fl05


justify-content: flex-start;

左端揃え

.flex{
display: flex;
justify-content: flex-start;
}

fl06

flex-direction

flex-directionは、子要素の並びを指定するプロパティです。


flex-direction: row;

横並びになります。rowは初期値です。

.flex{
  display: flex;
  flex-direction: row;
}

fl02


flex-direction: row-reverse;

横並びの逆順。横並びですが右から要素が並びます。

.flex{
  display: flex;
  flex-direction: row-reverse;
}

fl08


flex-direction: column;

縦並びになります。

.flex{
  display: flex;
  flex-direction: column;
}

fl01


flex-direction: column-reverse;

縦並びの逆順になります。下から要素が並んでいきます。

.flex{
  display: flex;
  flex-direction: column-reverse;
}

fl09

終わりに

いかがでしたでしょうか。
「display:flex」を使うだけで、とても便利になったことがわかります。

.block{
  display: flex;
  flex-direction: row;
}
 
@media only screen and (max-width: 980px){
  .block{
     flex-direction: column;
  }
}

上記のようなCSSをかけば、981px以上なら横並びに、そして、980px以下は縦並びに変化させることができます。

flexの強みは、横幅の指定をしなくても横並びになってくれる点と、floatを解除する必要がなくなり、clear:both;を忘れた時のレイアウト崩れがなくなる点でしょうか。

他にも、様々な利点がありますので、来週以降に解説していきたいと思います。

欠点は、CSS3のためにベンダープレフィックスが必要である点と、IE9以下に対応していない点でしょうか。

fl09

http://caniuse.com/#search=flexのサイトによると、
◯アンドロイド4.1と4.3においては、-webkit-◯IE10には、-ms-
の記述が必要らしいです。

スマホ専用のサイトを作る時は、display:flex;を積極的に使っていきましょうね。

Pocket

CRAが運営する就労移行支援事業所 ワークサポートセンターはこちら