模写修行メディア

Flexboxで均等幅(同じサイズ)で横並び配置する方法!

  • Flexboxで子要素(flexアイテム)の大きさを均等幅(同じサイズ)にしたい

この記事ではサンプルを用いてFlexboxで子要素(flexアイテム)の大きさを均等幅(同じサイズ)にする方法を紹介します。

この記事はお悩み解決系の記事なので、Flexboxに関する理解を深めたい方は下の記事をご覧ください。

CSS Flexbox の使い方をどこよりも詳しく解説!図解やサンプルもあり!

👇 メンターやってます 👇

模写修行やこのメディアを作ったエンジニア中心に、メンタリングサービスHello Mentorを運営しています。

0からweb制作やプログラミングの勉強を始める方はもちろん、12ヶ月以上独学している方や既にお仕事をしている方にもご利用いただいています!

模写武者くんのアイコン
  • 独学に限界を感じている...
  • 何をどこまで勉強すれば良いかわからない...
  • 自分の書き方が正しいかわからない...
  • 検索しても解決しない問題が多い...
  • 転職や副業のアドバイスが欲しい...

このような方は、ぜひ下記のリンクからサービス詳細をご覧ください。無料相談もお気軽にお申し込みください。

※ 少人数運営のため人数制限あり ※

詳しいサービス内容を見る

入会金/解約料/契約期間の縛りなし

👆 メンターやってます 👆

この記事の目次

均等幅(同じサイズ)で配置するには flex: 1;を使うだけ!

均等幅の図

図のようにflexアイテムを均等に配置する方法となぜ均等になるのかを解説します。

<div class ="flex-container">
    <div class ="flex-item">1</div>
    <div class ="flex-item">2</div>
    <div class ="flex-item">3</div>
</div>
.flex-container {
    display: flex;
    ...
}

.flex-item {
    flex: 1; /* これが重要! */
    ...
}

このようにflexアイテムに対して、flex: 1;を指定するだけで、flexアイテムの個数に限らず均等幅(同じサイズ)になります。

たったこれだけなのでコピペして使えますが、なぜこうなるかも理解してみてください。次のセクションでなぜ均等幅になるか解説します。

【初学者・中級者の方】独学に限界を感じてませんか?

プログラミングやデザインは独学可能ですが、ほとんんどの方が苦戦します。

↓このように感じていませんか?

  • 何をどこまで勉強すれば良いかわからない...
  • 自分の書き方が正しいかわからない...
  • 検索しても解決しない問題が多い...
  • 転職や副業するまでの道が見えない...

そんな問題を解決するために、模写修行やこのメディアを作ったエンジニア/デザイナー中心に、メンタリングサービスHello Mentorを始めました。

初級者から中級者まで対応できる、数少ないサービスです。

スクールのような大金は必要ありません。高額な費用は払いたくないけど、プロのサポートが欲しい方は、ぜひ下記のリンクからサービス詳細をご覧ください。

※ 少人数運営のため人数制限あり ※

詳しいサービス内容を見る

入会金/解約料/契約期間の縛りなし

👆 メンターは全員現役エンジニア 👆

なぜflex: 1;で均等幅(同じサイズ)で配置されるのか

flexプロパティは、flex-grow / flex-shrink / flex-basisの3つをまとめて指定出来るプロパティです。

flexプロパティの初期値は0 1 autoですが、数値だけを指定すると、n 1 0になります。(nが指定した数値)

/* flex: 1;と同じ */
.flex-item {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: 0;
}

つまり、flex: 1;は上の指定をしていることになります。

ポイントはflex-basis: 0;です。flexアイテムは全て幅が0だと想定されて、余ったスペースが分配されます。『flex アイテムは全て幅が0 = 余ったスペースはflexコンテナの幅そのもの』になります。

余ったスペース(= flex コンテナの幅そのもの)を均等にflexアイテムに分配していることになるので、flexアイテムは均等幅になります。

flexアイテムの幅が0想定なのでflexアイテムがflexコンテナに収まりきらないことはあり得ません。従ってflex-shrinkの値はなんの影響も与えません。

また、flex-growは全てのflexアイテムに共通で指定すれば数値はなんでも良いので、flex: 5;でもflex: 100;でも均等幅になります。

自由な比率で幅を決めるのも簡単!

flex: 1;で均等幅(同じサイズ)で配置され理由が理解できれば、2:1 や 4:3 など、自由な比率でflexアイテムの幅を決めることも簡単です。

2:1の幅の図

上の図は2:1の比率の幅になっています。

.flex-item:nth-child(1) {
    flex: 2;
}

.flex-item:nth-child(2) {
    flex: 1;
}

どちらもflex-basis: 0;なので、flexアイテムは幅が0だと想定されて、余ったスペースを2:1で分配しています。

URLなど長い英語の文字列が入る場合は注意!

.flex-item {
    ...
    word-wrap: break-word;
    min-width: 0;
}

URLなど長い英語の文字列が入る場合、上の2行をプラスしましょう。この2行がないと英語の文字列が折り返さずにおかしなことになります。

制作時に英語の文字列が入らなくても、その後文章差し替え等で入る可能性も考慮して、必ず入れておいても良いと思います。

他にもFlexbox関連の記事を上げています!

レイアウトを作るにはFlexboxの理解が必須です。基礎を学びたい方は下記の記事をご覧ください。

CSS Flexbox の使い方をどこよりも詳しく解説!図解やサンプルもあり!

Flexboxでもレイアウトは作れますが、デザインによってはCSS Gridの方が適している場合もあります。CSS Gridの使い方は下記の記事をご覧ください。

【CSS Grid入門】図解も交えて使い方を詳しく解説!

この記事のように、知っておくと便利なFlexbox関連の記事も多数あげています。

Flexboxで最後の1つだけ右寄せや下寄せにする方法! Flexboxで画像や要素が小さくなる(潰れる)時の対処方法! Flexboxで画像が縦に伸びる(比率がおかしい)時の対処方法!

独学に限界を感じていませんか?

現役エンジニアによるメンタリングサービス作りました!

模写修行やこのメディアを作ったエンジニア中心に、メンタリングサービスHello Mentorを運営しています。

👇 こんな方のためのサービスです。

  • 独学に限界を感じている...
  • 何をどこまで勉強すれば良いかわからない...
  • 自分の書き方が正しいかわからない...
  • 検索しても解決しない問題が多い...
  • 転職や副業のアドバイスが欲しい...

メンターを務めるのは、今も現役でコードを書いているエンジニアのみです。駆け出しの方やメンターだけをやっている方はいません。

高額な料金はかかりません。サブスク / 契約期間の縛りなし / 入会金・解約料なしなので、リスクなく始められます。

少しでも興味がある方は、ぜひ下記のリンクからサービスサイトをご覧ください。無料相談もお気軽にお越しください。(無理な営業等一切ございません!)

※ 少人数運営のため人数制限あり ※

詳しいサービス内容を見る

入会金/解約料/契約期間の縛りなし

この記事を書いた人

Gakuのアイコン

Gaku / @gaku92014091

フリーランス8年を経て法人化(3期目)、業界歴は12年目。コンテンツ制作、ライティング、マーケティング、デザイン、コーディング、プログラミング(フロント)、幅広くやってます!webサービスを作るのが好き!

当メディア運営メンバーでメンターやってます!👉

詳しく見る

\Share/

模写修行のトップページのスクリーンショット
模写修行

実務レベルを体験するためのコーディング練習教材