質問するログイン新規登録

Q&A

3回答

175閲覧

Flexboxで複数行のグリッドを作りたいが、アイテムの幅や配置が意図通りにならない

chiho-cofe

総合スコア0

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2026/04/22 12:43

0

0

実現したいこと

サービス紹介でカードを2段に配置。上段は4枚、下段は3枚すべて同じサイズの中央揃えに実装したいです。

発生している問題・分からないこと

grid columnで上段は4枚、下段は3枚には分けれました。しかしカードのサイズが画面幅いっぱいに合うように伸びてしまいすべて同じサイズになりませんでした。
カードが上段4枚、下段3枚ですべて同じサイズになる方法はありますでしょうか??

歯科医院の模写最中につまずいています。

該当のソースコード

HTML

1<div class="grid-container"> 2 <div class="card">1</div> 3 <div class="card">2</div> 4 <div class="card">3</div> 5 <div class="card">4</div> 6 <div class="card">5</div> 7 <div class="card">6</div> 8 <div class="card">7</div> 9</div>

CSS

1.grid-container { 2 display: grid; 3 grid-template-columns: repeat(12, 1fr); 4 gap: 20px; 5} 6.card { 7 background-color: palevioletred; 8} 9.card:nth-child(-n + 3) { 10 grid-column: span 4; 11} 12.card:nth-child(n + 4) { 13 grid-column: span 3; 14}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

以下の方法が出てきました。調べあさりましたが、結果このflex-boxの方法かgrid columnの方法になりました。

  • リスト番号リストflex-box用いて、flex-wrap width〇%
  • リスト```width: calc((100% - (20px * 3)) / 4);
### 補足 可能性がありそうな方法はすべて試しています。 私の今の実力では難しいようなのでどなたかお助けいただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

Lhankor_Mhy

2026/04/23 00:13

ご提示のコードだと、上3下4になるようでした。
guest

回答3

0

引用テキスト上段は4枚、下段は3枚ですべて同じサイズの中央揃えに実装したいです。

gridを使った方法は既に出ているので、flex-boxを使う方法を。

css

1.grid-container { 2 display: flex; 3 flex-wrap: wrap; 4 justify-content: center; 5 gap: 20px; 6} 7.card { 8 background-color: palevioletred; 9 width: calc((100% - (20px * 3)) / 4);; 10}

投稿2026/04/23 08:17

hatena19

総合スコア34381

0

「上段は4枚、下段は3枚ですべて同じサイズの中央揃え」とのことですが、ご提示のコードだと上3段下4段になるようでした。

上3段下4段であれば、このようにするとどうでしょうか。

css

1.grid-container { 2 display: grid; 3 grid-template-columns: repeat(8, 1fr); 4 gap: 20px; 5} 6.card{ 7 grid-column: span 2; 8} 9.card:nth-child(1) { 10 grid-column: 2 / span 2; 11}

上4段下3段であれば、このようにするとどうでしょうか。

css

1.grid-container { 2 display: grid; 3 grid-template-columns: repeat(8, 1fr); 4 gap: 20px; 5} 6.card{ 7 grid-column: span 2; 8} 9.card:nth-child(5) { 10 grid-column: 2 / span 2; 11}

投稿2026/04/23 00:35

編集2026/04/23 00:59
Lhankor_Mhy

総合スコア37750

0

どういうこと?
普通は指定すればすべて同じサイズになる

ていうか解決するために自分でソースコード書いた?
たった43行だけど。

イメージ説明

投稿2026/04/22 13:39

u2025

総合スコア245

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.25%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問