質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

Q&A

解決済

2回答

324閲覧

横並びにしたコンテンツを内包したボックスをさらに横並びにし、高さを揃えたい

saku615

総合スコア45

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

0グッド

0クリップ

投稿2022/06/09 10:30

現在横並びのレイアウトを制作しているのですが、どうしてもうまくいかないので質問させてください。

一つの項目自体は画像と商品名の組み合わせなのですが、そこに見出しも絡んでくるため、flexによる横並びを2段階で使用しています。

文字で説明するのが難しいので画像を載せます。

■PC時のレイアウト
イメージ説明

■PC時、商品名の長さが2行になるものがあるパターン
イメージ説明

■SP時のレイアウト
イメージ説明

まず3つのブロックを横並び、各赤線の中でも横並びにしています。

HTML、cssは下記のようになっています。

HTML

<div class="contents"> <div class="box col01"> <p class="head">見出し</p> <ul class="list"> <li> <div> <p class="image"><img src="image.jpg" alt=""></p> <p class="link"><a href="#">商品名</a></p> </div> </li> </ul> </div> <div class="box col04"> <p class="head">見出し</p> <ul class="list"> <li> <div> <p class="image"><img src="image.jpg" alt=""></p> <p class="link"><a href="#">商品名</a></p> </div> </li> <li> <div> <p class="image"><img src="image.jpg" alt=""></p> <p class="link"><a href="#">商品名</a></p> </div> </li> <li> <div> <p class="image"><img src="image.jpg" alt=""></p> <p class="link"><a href="#">商品名</a></p> </div> </li> <li> <div> <p class="image"><img src="image.jpg" alt=""></p> <p class="link"><a href="#">商品名</a></p> </div> </li> </ul> </div> <div class="box col01"> <p class="head">見出し</p> <ul class="list"> <li> <div> <p class="image"><img src="image.jpg" alt=""></p> <p class="link"><a href="#">商品名</a></p> </div> </li> </ul> </div> </div>

CSS

.contents { display: flex; justify-content: space-between; } .box { display: flex; flex-direction: column; } .box.col01 { width: 17%; max-width: 220px; } .box.col04 { width: 66%; } .box.col04 li { width: 25%; } .list { display: flex; justify-content: space-between; } .list li { max-width: 220px; display: flex; flex-direction: column; } .list li div { display: flex; flex-direction: column; } .head { padding: 14px 0 7px; font-size: 2rem; font-weight: bold; text-align: center; background-color: #E8EBF0; border-bottom: 15px solid #FFF; font-family: "ヒラギノ角ゴ W6 JIS2004"; white-space: nowrap; } .link { padding: 18px 0 16px; color: #fff; font-size: 2rem; background-color: #1D3366; line-height: 1.5; font-weight: bold; } .link a { display: block; color: #fff; text-align: center; padding: 0 5px; }

できればそれぞれの隙間は同じサイズになると嬉しいのですがなかなかうまくいかず…
flex以外でも大丈夫なので、何かいい方法がありましたら教えていただけますとありがたいです。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2022/06/10 00:59

各 .col00 下の商品の数は固定ですか? たぶん、subgrid で実装できると思うのですが、対応しているブラウザが少ないです。
saku615

2022/06/10 05:07

Lhankor_Mhy様 .col01なら商品数は1、.col04なら4つになります。 1列の商品数は6で固定です。 recal様 やはりjsですかね…
Lhankor_Mhy

2022/06/10 07:37

繰り返しになってすみませんが、subgrid で実現可能であるかと思います。 https://qiita.com/oreo/items/5301dcb1128f20cc7d97 現状のところ、実装が終わっているのは Firefox のみ、Chrome は "In development"、Safari は 16から実装予定となっており、おそらく来年ぐらいには普通に書けるようになるかと思いますが、現状では対応ブラウザに問題があります。
recal

2022/06/10 08:29

subgrid魅力的ですね
saku615

2022/06/13 06:43

結局今回は各ページごとに決まった行数でずれが出ないように文言を調整することにしました。 subgridいいですね…! 各ブラウザに実装されるのを待とうと思います!
guest

回答2

0

間に合わなかったようですみません。

一応、サンプルを置いておきます。
https://jsfiddle.net/Lhankor_Mhy/jnr2cgv5/

css

1 .contents { 2 display: grid; 3 grid: auto auto auto / repeat(6, 1fr); 4 grid-auto-flow: column; 5 gap: 5px; 6 } 7 8 .box { 9 display: contents; 10 } 11 12 .head { 13 background: turquoise; 14 } 15 16 .image {} 17 18 .image img { 19 width: 100%; 20 } 21 22 .link { 23 background: olive; 24 } 25 26 .col04 .head { 27 grid-column: span 4; 28 } 29 30 .list, 31 .list>li, 32 .list>li>div { 33 display: contents; 34 } 35 36 @media screen and (max-width:576px) { 37 .contents { 38 display: grid; 39 grid: auto-flow / auto; 40 grid-auto-flow: row; 41 gap: 15px; 42 } 43 44 .box { 45 display: grid; 46 grid: auto auto auto / 1fr 1fr; 47 grid-auto-flow: column; 48 gap: 5px; 49 } 50 51 .head {} 52 53 .image {} 54 55 .image img { 56 width: 100%; 57 } 58 59 .link {} 60 61 .col04.box { 62 grid: repeat(5, auto) / 1fr 1fr; 63 grid-auto-flow: column; 64 } 65 66 .col04 .head { 67 grid-column: span 2; 68 } 69 }

投稿2022/06/13 09:03

Lhankor_Mhy

総合スコア36117

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saku615

2022/06/15 07:30

Lhankor_Mhy様 とんでもないです! ありがとうございます、試してみます!
guest

0

自己解決

今回は各ページごとに決まった行数でずれが出ないように文言を調整することにしました。

投稿2022/06/13 06:42

saku615

総合スコア45

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問