ZeroPlus Gateについて

\ シェア /

FacBook
Twitter
LINE
はてブ
PPocket
ZeroPlus Media > Web制作 > HTML/CSS > 【CSS】justify-contentの使い方や効かない原因を解説

【CSS】justify-contentの使い方や効かない原因を解説

HTML/CSS

2022/03/31

2023/05/06

flex justify-content 使い方記事サムネイル

Web制作をしていると、要素を横並びにするレイアウトをよく使います。そこで「横並びにした要素を均等に配置したい」「両端の要素を親要素の端に揃えたい」などと思うことはありませんか?

そのようなレイアウトを作成するには、display: flex;と justify-content を併用します。を使いこなすと、下記画像のようなレイアウトを瞬時に作ることができるようになります。この記事では、justify-content の使い方を解説します。基本的な使い方だけでなく justify-content が効かない原因についても解説しておりますので、ぜひ学習にお役立てください。

この記事で身につく内容
  • justify-contentとは
  • justify-contentの使い方
  • justify-contentが効かない原因

ZeroPlus Gateについて

プログラミング学習でこのような経験はありませんか?

  1. 目標に向けて何を学べば良いかわからない
  2. 調べても解決策が見つからない
  3. 現場レベルのスキルが身につくのか不安

これらの悩みは、学習環境を整えることで全て解決することができます。

ZeroPlus Gateでは、30日間無料で最適な学習環境を提供しています。

  1. なんでも相談できる専属メンター
  2. いつでも技術相談ができるプロ講師
  3. 元IT企業CTO監修のカリキュラム

条件なしでこのレベルの環境を無料で提供しているのはZeroPlus Gateだけです。
ただし、無料サービスの提供には参加者の数に制限があります。

少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。

今すぐZeroPlus Gateの詳細を見る

関連記事

この記事で紹介している justify-content は、flexbox で使用するプロパティです。flexbox を使いこなすには、一つのプロパティだけでなく全体的に学習していくことが大切です。

flexboxについては、こちらの記事で詳しく解説しています。flexboxプロパティにはどんなものがあるかを学習して、効率よくCSSのレイアウト作成を行えるようになっていきましょう。

justify-contentとは

justify-content は、flexアイテムの配置を指定するプロパティです。左寄せ中央寄せ右寄せなどの配置や、flexアイテム同士の余白などを指定できます。

justify-content の余白は、主軸方向につけられます。主軸とは、flexアイテムが並ぶ向き(縦・横)のことを指します。基本的に主軸は水平(横)方向ですが、flex-direction の値が  column または column-reverse のときは垂直(縦)方向へと変化します。

主軸については、flex-direction プロパティを学習すると理解しやすくなります。flex-direction はこちらの記事で解説していますので、併せて読んでみてください。

justify-contentの使い方

justify-content の値と使い方は以下の通りです。

justify-contentの値と使い方
  • flex-start / start:左寄せ(初期値)
  • flex-end / end:右寄せ
  • center:中央寄せ
  • space-between:flexアイテムの両端揃え
  • space-around:flexアイテムの両側の余白を均等にする
  • space-evenly:flexアイテム間のすべての余白を均等にする

justify-contentの出力結果サンプル

まずは基本的な書き方を学習してみましょう。

 

基本書式

justify-content は、display: flex; で横並びにした要素の配置を指定するプロパティです。以下が基本形です。

.flexbox {
  display: flex;
  justify-content: 値;/*どのように配置するか指定する*/
}

justify-content と display: flex; はどちらも親要素(flexコンテナ)に指定しましょう。

ZeroPlusgate50教材の動画

 

flex-start / start - 左寄せ

justify-content: flex-start; は、横並びの要素を左寄せで配置する指定です。flex-start は初期値のため、指定しなくても左寄せで表示されます。

<div class="flexbox">
  <div class="flex-item">①</div>
  <div class="flex-item">②</div>
  <div class="flex-item">③</div>
  <div class="flex-item">④</div>
  <div class="flex-item">⑤</div>
</div>
.flexbox {
  display: flex;
  justify-content: flex-start;/*左寄せで配置*/
}

.flex-item {
  background: orange;
  border: 1px solid #000;
  width: 10%;
}

justify-content: flex-start;の出力結果

 

flex-end / end - 右寄せ

justify-content: end; は横並びの要素を右寄せで配置する指定です。

<div class="flexbox">
  <div class="flex-item">①</div>
  <div class="flex-item">②</div>
  <div class="flex-item">③</div>
  <div class="flex-item">④</div>
  <div class="flex-item">⑤</div>
</div>
.flexbox {
  display: flex;
  justify-content: flex-end;/*右寄せで配置*/
}

.flex-item {
  background: orange;
  border: 1px solid #000;
  width: 10%;
}

justify-content: flex-end;の出力結果

 

center - 中央寄せ

justify-content: center; は横並びの要素を中央寄せで配置する指定です。

<div class="flexbox">
  <div class="flex-item">①</div>
  <div class="flex-item">②</div>
  <div class="flex-item">③</div>
  <div class="flex-item">④</div>
  <div class="flex-item">⑤</div>
</div>
.flexbox {
  display: flex;
  justify-content: center;/*中央寄せで配置*/
}

.flex-item {
  background: orange;
  border: 1px solid #000;
  width: 10%;
}

justify-content: center;の出力結果

 

space-between - 両端揃え

justify-content: space-between; は、横並びの要素を両端揃えで均等に配置する指定です。

<div class="flexbox">
  <div class="flex-item">①</div>
  <div class="flex-item">②</div>
  <div class="flex-item">③</div>
  <div class="flex-item">④</div>
  <div class="flex-item">⑤</div>
</div>
.flexbox {
  display: flex;
  justify-content: space-between;/*両端揃えで配置*/
}

.flex-item {
  background: orange;
  border: 1px solid #000;
  width: 10%;
}

justify-content: space-between;の出力結果

 

space-around - flexアイテムの両側に均等な余白をつける

justify-content: space-around; は、それぞれの要素に均等な余白をつける指定です。要素の両側に均等な余白をつけるため、要素どうしの余白は両端の余白の2倍の大きさになります。

<div class="flexbox">
  <div class="flex-item">①</div>
  <div class="flex-item">②</div>
  <div class="flex-item">③</div>
  <div class="flex-item">④</div>
  <div class="flex-item">⑤</div>
</div>
.flexbox {
  display: flex;
  justify-content: space-around; /*flexアイテムの両側に均等な余白*/
}

.flex-item {
  background: orange;
  border: 1px solid #000;
  width: 10%;
}

justify-content: space-around;の出力結果

 

space-evenly - すべての余白を均等につける

justify-content: space-evenly; は、すべての余白を均等にする指定です。こちらの指定では、両端を含めたすべての余白が同じ大きさとなります。

<div class="flexbox">
  <div class="flex-item">①</div>
  <div class="flex-item">②</div>
  <div class="flex-item">③</div>
  <div class="flex-item">④</div>
  <div class="flex-item">⑤</div>
</div>
.flexbox {
  display: flex;
  justify-content: space-evenly;/*すべての余白を均等に指定*/
}

.flex-item {
  background: orange;
  border: 1px solid #000;
  width: 10%;
}

justify-content: space-evenly;の出力結果

ZeroPlusgate50教材の動画

 

justify-contentが効かない原因

横並びにした要素を中央寄せや両端揃えにしたいのに、「 justify-content が効かない!」という状態になってしまうことはよくあります。学習に詰まってしまわないように、主な原因を確認しておきましょう。

以下は justify-content が効かないおもな原因です。

  • display: flex; の指定を忘れている
  • 子要素に margin: auto; を指定している
  • before・after を使用している
  • 子要素のテキストを中央寄せにしようとしている

 

display: flex;の指定を忘れている

justify-contentdisplay: flex; とセットで使用します。そのため、display: flex; の指定がなければ justify-content は効きません。

例えば display: inline-block; で要素を横並びにしているときに justify-content を指定しても効果がないので、横並びにしている方法を見直してみましょう。

See the Pen justify-content display: flex;を指定していない by ZeroPlus (@zeroplus-programming) on CodePen.

 

子要素にmargin: auto;を指定している

全体的な配置を中央寄せに、display: flex; で横並びにした要素を右寄せにしたい場合、margin: auto; を使用していると justify-content が効きません。

これは margin による余白が先に与えられ、justify-content はそのあとで計算されるためです。

See the Pen justify-content margin: auto; by ZeroPlus (@zeroplus-programming) on CodePen.

 

疑似要素::before, ::afterを使用している

::before::after などの擬似要素を使用していると、justify-content の配置が思うようにいかないことがあります。

display: flex; は子要素に影響を与えるプロパティです。::before::after などの擬似要素は子要素に含まれるので、display: flex; の影響を受けます。このため、擬似要素に指定した要素の配置がずれてしまいます。

See the Pen justify-content before by ZeroPlus (@zeroplus-programming) on CodePen.

このようなときは、子要素に ::before::after を指定すれば display: flex; の影響を受けずに要素の配置を指定できます。

See the Pen justify-content 擬似要素 before by ZeroPlus (@zeroplus-programming) on CodePen.

 

子要素のテキストを中央寄せにしようとしている

子要素に横幅があり、テキストを中央寄せにする場合、親要素に justify-content を指定しても適用されません。

See the Pen justify-content テキスト中央寄せになっていない by ZeroPlus (@zeroplus-programming) on CodePen.

このようなときは、子要素に display: flex;justify-content: center; を指定するとテキストを中央寄せにできます。

See the Pen justify-content 中央寄せ by ZeroPlus (@zeroplus-programming) on CodePen.

また、子要素に高さがある場合は、align-items: center; を指定することでテキストの上下中央寄せが可能です。justify-content と align-items を同時に指定すれば、上下左右中央寄せにできます。

 

まとめ

justify-content は display: flex; で横並びにした要素の並び方を指定するプロパティです。中央配置や右寄せだけでなく、均等に余白を設定する並べ方も可能です。Web制作において、レイアウトを整えることは欠かせません。レイアウトの作成で困らないよう、justify-content を使いこなせるようになりましょう。

justify-contentまとめ

  • 横並びにした要素の並び方を指定するプロパティ
  • display: flex; と併用する
  • 位置による配置と均等な配置が可能
  • 効かないおもな原因は「 display: flex; の記述忘れ」「margin: auto;」「擬似要素」「子要素に指定している」

 

ZeroPlus Gateについて

プログラミング学習でこのような経験はありませんか?

  1. 目標に向けて何を学べば良いかわからない
  2. 調べても解決策が見つからない
  3. 現場レベルのスキルが身につくのか不安

これらの悩みは、学習環境を整えることで全て解決することができます。

ZeroPlus Gateでは、30日間無料で最適な学習環境を提供しています。

  1. なんでも相談できる専属メンター
  2. いつでも技術相談ができるプロ講師
  3. 元IT企業CTO監修のカリキュラム

条件なしでこのレベルの環境を無料で提供しているのはZeroPlus Gateだけです。
ただし、無料サービスの提供には参加者の数に制限があります。

少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。

今すぐZeroPlus Gateの詳細を見る

\ 学んだことをSNSでシェアしよう /

おすすめのタグ

この記事の執筆者

ZeroPlus Media変種部

ZeroPlus Media編集部

ZeroPlusは、「フリーランス特化型プログラミングスクール」です。ZeroPlus Mediaでは、フリーランスとして活躍する際に役立つ有益なプログラミングやWeb制作に関する情報を発信しています。

質問について

ZeroPlus Media読者限定で質問対応をおこなっています。以下の2つの方法で質問を受け付けています。

選べる2つの質問方法

1

Google Foam(テキスト)で質問

mail

フォーム送信

メールで解答

formで質問
2

Google meet(オンラインmtg)で質問

meet

日時選択

メールを受け取る

メールからmtgに参加

meetで質問
ZeroPlus Gateについて

あなたの目的に合わせた2つのサービス

あなたの目的に合わせたZeroPlusの2つのサービス
基礎からフリーランスレベルまで本質的な学びを提供しています

完全無料!30日間で学びきれる
プログラミンスクールZeroPlus Gate

  • お金をかけずに、学習を進めたい
  • Webサイトを作れるようになりたい
  • メンターや講師に質問しながら学習したい

詳しくはこちらから

フリーランス特化型
プログラミングスクール ZeroPlus

  • プログラミング学習で悩んでいる
  • 仲間と一緒に学習したい
  • フリーランスとしての総合的な力を養いたい

詳しくはこちらから