🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
HTML

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

CSS

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

Q&A

解決済

2回答

9555閲覧

(画像あり)高さの違うアイテムが詰まったレイアウトをflexboxで作るには?

退会済みユーザー

退会済みユーザー

総合スコア0

HTML

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

CSS

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

0グッド

0クリップ

投稿2020/11/26 08:22

編集2020/11/26 08:25

画像のような、高さの違うアイテムが詰まったレイアウトを作りたいと思っています。

イメージ説明

現在、下の画像のような表示になっています。全体がflexコンテナになっており、row方向 + wrapの折り返し、align-items: flex-start がかかっている状態です。

align-items: flex-start をかけたことで個々のアイテム自体の高さはバラバラにできたのですが、ここからさらにアイテム同士の縦を詰める方法がわかりません。具体的には左下のアイテムの上にある白い余白?を詰めたく、また今後高さの違うアイテムが増えた際にも対応できるようにしたいです。

HTML/CSSどちらをいじるのでもいいのですが、どのような変更を加えたらそのようなレイアウトが可能ですか?そもそもflexboxでそのようなレイアウトは可能なのでしょうか?

イメージ説明

html

1<ul class="list"> 2 <li class="item"> 3 <div class="item-image"></div> 4 <h3 class="item-heading">heading</h3> 5 <p class="item-text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis molestiae, neque expedita fugit voluptatum iusto aperiam deserunt impedit, quod a dolorum minima obcaecati quam excepturi earum sint at dolor hic!</p> 6 </li> 7 <li class="item"> 8 <div class="item-image item-image-large"></div> 9 <h3 class="item-heading">heading</h3> 10 <p class="item-text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis molestiae, neque expedita fugit voluptatum iusto aperiam deserunt impedit, quod a dolorum minima obcaecati quam excepturi earum sint at dolor hic!</p> 11 </li> 12 <li class="item"> 13 <div class="item-image item-image-large"></div> 14 <h3 class="item-heading">heading</h3> 15 <p class="item-text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis molestiae, neque expedita fugit voluptatum iusto aperiam deserunt impedit, quod a dolorum minima obcaecati quam excepturi earum sint at dolor hic!</p> 16 </li> 17 <li class="item"> 18 <div class="item-image"></div> 19 <h3 class="item-heading">heading</h3> 20 <p class="item-text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis molestiae, neque expedita fugit voluptatum iusto aperiam deserunt impedit, quod a dolorum minima obcaecati quam excepturi earum sint at dolor hic!</p> 21 </li> 22</ul>

CSS

1* { box-sizing: border-box; margin: 0; padding: 0; list-style: none; } 2 3.list { 4 display: flex; 5 flex-wrap: wrap; 6 align-items: flex-start; 7 justify-content: space-between; 8} 9 10.item { 11 width: calc((100% - 16px) / 2); 12 /* debug */ 13 border: 1px solid rgba(0,0,0,.4); 14 background-color: rgba(0,0,0,.2); 15} 16 17.item-image { 18 padding-top: 30%; 19 /* debug */ 20 border: 1px solid rgba(255,0,0,.4); 21 background-color: rgba(255,0,0,.1); 22} 23 24.item-image-large { 25 padding-top: 80%; 26} 27 28.item-heading { 29 font-size: 2em; 30}

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

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

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

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

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

guest

回答2

0

もしかしたら、flexboxではなくグリッドを使った方が質問者さんのやりたいことに沿うかと思います。

下記のサイトを参考にして作ってみてください。
CSSグリッドレイアウト
また、手軽にCSSグリッドレイアウトのコードを生成できる「Griddy」というサイトもあるそうです。

投稿2020/11/26 09:44

itzuakniami123

総合スコア74

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

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

退会済みユーザー

退会済みユーザー

2020/11/26 13:27

ありがとうございます!やはりflexboxでは難しそうですね。gridはまだ苦手意識がありましたが貼っていただいたサイト等で勉強してみようと思います。今回の件に関しては、column-countの方がより簡単に実装できましたのでそちらをベストアンサーにさせていただきました。
guest

0

ベストアンサー

画面幅に応じて列数を変えたり、要素数が増減する可能性がある、ということであれば、
flexboxではなくcolumn-countを指定してみるのもいいかもしれません。

https://coliss.com/articles/build-websites/operation/css/css-seamless-responsive-photo-grid-by-css-tricks.html

javascriptを使っていいのなら、Masonryを使ってみるとか。
https://masonry.desandro.com/

投稿2020/11/26 10:19

sizka_rn

総合スコア127

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

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

退会済みユーザー

退会済みユーザー

2020/11/26 13:26

ありがとうございます!column-countで比較的簡単に目的のレイアウトを実装することができました。ブラウザのサポートも十分されているようなのでこれから使っていきたいと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問