BootstrapのCardの高さを揃えたいです。 | 質問掲示板 | 独学!未経験からWebデザイナーになる!!

Web制作や付随することを何でも質問できるコーナーです。

未経験からWebデザイナーになる!! > 質問掲示板 > カテゴリ: HTML/CSS > BootstrapのCardの高さを揃えたいです。

BootstrapのCardの高さを揃えたいです。

当サイトのリニューアル作業に時間をあてるため、掲示板の投稿は当分停止させていただきます。
Bootstrapのカードを横並びにしています。
現在、各カードの文章量によって高さがまちまちなのですが、
すべて同じ高さ(文章量の多いものの高さに揃える)ようにしたいです。

調べたところ、2つの方法を試したのですが、どちらも高さが統一されず質問させていただきました。

(1)
<html>
col-* クラスを指定している一つ上の要素に「row-eq-height」を追加
<CSS>
.row-eq-height {
display: flex;
flex-wrap: wrap;
}
参考サイト:https://qiita.com/chii/items/8e2d0d04d02f3fecebce

(2)
<CSS>
.cardタグにmin-height:300px;と記載。
(300pxあれば足りそうだったので。)

私が書いているコードは下記の通りです。


【html】
<div class="card col-xs-6 col-lg-3 card_topic" style="width: 18rem;">

   <img src="images/Mug-Mockup.jpg" class="card-img-top img-fluid" alt="...">

   <div class="card-body">

     <h5 class="card-title">"あいう"</h5>

     <p class="card-text">ららららら</p>

   </div>
</div>
お茶太郎さん、こんにちは。

Bootstrap4系では、.rowに

display: flex;
flex-wrap: wrap;

が最初からついており、何もせずともご希望の表示になると思いますので、Bootstrap3系をお使いでしょうか?


Bootstrap3系でも、(1)(2)のいずれの方法でも問題無いようです。
※(2)は300pxに収まる場合のみ。

(1)の方が汎用性が高いので、そちらのソースを上げます。

<!DOCTYPE html>
<html>

<head>
<title>title</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<style>
.row-eq-height {
display: flex;
flex-wrap: wrap;
}

.card {
background-color: #eee;
/* min-height: 300px; */
}
</style>
</head>

<body>
<div class="row row-eq-height">
<div class="card col-xs-6 col-lg-3 card_topic" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">&quot;あいう&quot;</h5>
<p class="card-text">ららららら</p>
<p class="card-text">ららららら</p>
<p class="card-text">ららららら</p>
<p class="card-text">ららららら</p>
</div>
</div>
<div class="card col-xs-6 col-lg-3 card_topic" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">&quot;あいう&quot;</h5>
<p class="card-text">ららららら</p>
</div>
</div>
<div class="card col-xs-6 col-lg-3 card_topic" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">&quot;あいう&quot;</h5>
<p class="card-text">ららららら</p>
</div>
</div>
<div class="card col-xs-6 col-lg-3 card_topic" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">&quot;あいう&quot;</h5>
<p class="card-text">ららららら</p>
</div>
</div>
<div class="card col-xs-6 col-lg-3 card_topic" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">&quot;あいう&quot;</h5>
<p class="card-text">ららららら</p>
</div>
</div>
</div>
</body>

</html>



検証用に最初のcardだけ文字を多くしてみました。
ご提示いただいたコードを基に、以下を行っただけです。

・シンプルなHTMLファイルにBootstrapを読み込ませる。
・CSSを定義する(.cardに色を付けたのは分りやすくするため)
・<div class=".row row-eq-height"></div>内にご提示のコードを入れる(検証に不要な画像は削除)。
・<div class="card ~"></div> を増やす(1つだと検証できないため)。

具体的にこちらでもほぼそのまま検証できるHTML/CSSコード(個人情報に繋がる部分のみ置き換えたもの)をご提示いただければ、また違った回答ができるかもしれません。


後は余談ですが、HTML内のテキスト中では"(ダブルクォート)は&quot;とエスケープします。

また、全角スペースがコード中のインデントに使われているようです。今回のご投稿用に手打ちで調整されたのでしたら良いですが、そうで無い場合は半角スペースまたはタブに置き換えが必要です。
(投稿時にコードとしてくくっていただければ、半角スペースなどでもインデントが適用されます。)