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

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

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

FlexはFlash PlayerやAdobe Airで動作するRIA(リッチインターネットアプリケーション)を開発する為のフレームワークです

HTML

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

CSS

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

Q&A

解決済

1回答

1022閲覧

フレキシブルボックスを使って横並びにした3つのボックスの高さをそろえ、内容物の高さも同じにしたい

cheshire-cat

総合スコア73

Flex

FlexはFlash PlayerやAdobe Airで動作するRIA(リッチインターネットアプリケーション)を開発する為のフレームワークです

HTML

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

CSS

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

0グッド

0クリップ

投稿2020/10/28 10:32

編集2020/10/29 02:35

display:flex;を使って、3つのボックスの高さをそろえたいと考えています。

具体的には、最終的に

「顔写真」
「連絡先」
すこしの空白をはさんで
「ボタン」

と表示されるようにすることが目的です。

このとき「ボタン」の位置は3つのボックスとも、
同じ高さで横一列にそろえたいです。

仮にHTMLが

HTML <div class="contents"> <div class="box"> <div class="face">顔写真</div> <div class="address"> 連絡先 連絡先 連絡先 連絡先 </div> <div class="btn">ボタン</div> </div> <div class="box"> <div class="face">顔写真</div> <div class="address"> 連絡先 連絡先 連絡先 連絡先 連絡先 連絡先 連絡先 連絡先 </div> <div class="btn">ボタン</div> </div> <div class="box"> <div class="face">顔写真</div> <div class="address"> 連絡先 連絡先 連絡先 連絡先 連絡先 連絡先 連絡先 連絡先連絡先 連絡先 連絡先 連絡先 </div> <div class="btn">ボタン</div> </div> </div>

の場合は

CSS .contents { display: flex; } .box { width: 200px; display: flex; flex-direction: column; } .btn { margin-top: auto; }

と書けば、希望通り
3つのboxで「ボタン」が横一列に同じ高さに並びます。

しかしdiv.boxの中に孫要素まで入っている場合が分かりません。
具体的には

HTML <div class="contents"> <div class="box"> <div class="face">顔写真</div> <div class="contact"> <div class="address"> 連絡先 連絡先 連絡先 連絡先 </div> <div class="btn">ボタン</div> </div> </div> <div class="box"> <div class="face">顔写真</div> <div class="contact"> <div class="address"> 連絡先 連絡先 連絡先 連絡先 連絡先 連絡先 連絡先 連絡先 </div> <div class="btn">ボタン</div> </div> </div> <div class="box"> <div class="face">顔写真</div> <div class="contact"> <div class="address"> 連絡先 連絡先 連絡先 連絡先 連絡先 連絡先 連絡先 連絡先連絡先 連絡先 連絡先 連絡先 </div> <div class="btn">ボタン</div> </div> </div> </div>

という場合、どのように高さをそろえたらよいのでしょうか?

試しに

CSS .contents { display: flex; } .box { width: 200px; } .contact { display: flex; flex-direction: column; } .btn { margin-top: auto; }

と書いてみましたが、まったくボタンの高さがそろわないですし、ほかに

CSS .contents { display: flex; } .box { width: 200px; } .box { display: flex; flex-direction: column; } .contact { margin-top: auto; }

と書くと、

「顔写真」
すこしの空白をはさんで
「連絡先」
「ボタン」

となってしまいました。

よろしくお願いします。

--- 追記 ---

投稿のあと、.contactに高さを明示し、.addressにoverflow:hiddenを使えば
思っていたものに近いものができそうでした。

具体的には

CSS .contents { display: flex; } .box { width: 200px; } .contact { display: flex; flex-direction: column; height: 200px; } .address { overflow: hidden; } .btn { margin-top: auto; }

とする方法です。

しかしこの方法は、わざわざ高さを明示しなければならない点が不満です。
また高さを明示したため、結局コンテンツ量が多くなると高さがそろわないという欠点があります。

そこで.addressにoverflow: hiddenをつけました。
ですがこの方法だとコンテンツが途切れるというのが不細工です。

希望していた形はコンテンツ量の増加にしたがって
3つのボックス(のaddress部分)も同時に広がる、というものでした。

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

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

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

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

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

m.ts10806

2020/10/29 02:45

質問は残り続けますので今後の検索のノイズになり得ます。タグを修正してください。 (ご自身の他の質問でも誤用されているようなのであわせてご対応ください)
guest

回答1

0

ベストアンサー

contactクラスもflexレイアウトにして、justify-content: space-between;でどうですか。

CSS

1.contents { 2 display: flex; 3} 4 5.box { 6 width: 200px; 7 display: flex; 8 flex-direction: column; 9} 10 11.contact { 12 flex: 1; 13 display: flex; 14 flex-direction: column; 15 justify-content: space-between; 16}

投稿2020/10/28 10:57

Daregada

総合スコア11990

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

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

cheshire-cat

2020/10/28 11:18

早い回答ありがとうございます。 できました! space-betweenは考えませんでした。 前に読んだ本に、margin-top:autoで余白を移動させるやり方が書いてあったので、margin-top:autoでやろうとしていました。 書き方の統一性の観点から、階層が深くなっても同じくmargin-top:autoでやりたいと考えていたのですが、ともかくこれで当面のピンチは凌げそうです。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問