menu

【CSS】flexboxで横並びの高さを揃える方法

2023年5月15日

Code

flexboxで横並びにしたときに、文字数などの違いから高さが揃わない事があるので、揃える方法を書いときます。

display: flexでは子要素はデフォルトで高さが揃うのですが、孫要素の高さはそろいません。

高さ不揃い。

↑こういつやつを
↓こうしたい。

完成系
    <div class="cards">
      <div class="card">
        <div class="imgtxt">
          <div class="img">
          </div>
          <div class="txt">
            <p class="ttl">ホームページをリニューアルしました!</p>
            <p>弊社のホームページをリニューアルいたしました。今後も皆様からのご意見やご要望を大切にし、より使いやすいホームページを目指してまいります。引き続き、どうぞよろしくお願いいたします。</p>
          </div>
        </div>
      </div>
      <div class="card">
        <div class="imgtxt">
          <div class="img">
          </div>
          <div class="txt">
            <p class="ttl">臨時休業のお知らせ</p>
            <p>23年3月5日は誠に勝手ながらお休みさせていただきます。</p>
          </div>
        </div>
      </div>
      <div class="card">
        <div class="imgtxt">
          <div class="img">
          </div>
          <div class="txt">
            <p class="ttl">〇〇新聞に弊社の商品が紹介されました</p>
            <p>23/02/01〇〇新聞の朝刊にて弊社の△△が紹介されました。</p>
          </div>
        </div>
      </div>
    </div>
.cards{
  width: 800px;
  margin: 50px auto;
  display: flex;
  justify-content: space-between;
}
.cards .card{
  width: 30%;
  overflow: hidden; //はみ出す部分を非表示
}
.cards .card .imgtxt{
  height: 100%;//高さ最大に
}
.cards .card .imgtxt .img{
  padding-top: 60%;
  background-color: darkgray;
}

.cards .card .imgtxt .txt{
  padding: 2%;
  background-color: #fff;
  height: 100%;//高さ最大に
}
.cards .card .imgtxt .txt .ttl{
  font-size: 16px;
  margin-bottom: 10px;
}

上のコードでは.cardsクラスを持つ要素(親要素)がflexboxとして設定されて、その子要素である.cardクラスを持つ要素が横並びに配置されます。

そして.cardの孫要素である.imgtxtクラスを持つ要素の高さを100%に設定することで、すべての.imgtxt要素の高さが揃います。

これで、flexboxを使用した際の高さの不揃い問題が解決です。めでたしめたし。

Follow Me!

Aji ろぐろぐみー筆者

GoogleAppsScriptを使った業務効率化が得意なWeb屋。
詳しいプロフィールはこのページで色々書いてます。Twitterもやってます。コメント頂けると陸に上がった魚のようにピチピチ喜びます!

関連記事

コメントはこちらからどうぞ

プライバシーポリシーはこちら
また、コメントはこちらで承認の作業を行うまでは表示されません。ご了承ください。

CAPTCHA