【HTML】カード系コンテンツのタイトル下部をそろえる【CSS】

どうも、くまだです。

カード系のアイテムで、タイトルの行数が変わっても下部にあるコンテンツをそろえる方法。

なお、コードはこちらの記事から使いまわし。

カード系コンテンツのタイトル下部をそろえる

例えば以下のような配置とコードのとき。

カードの配置
  <ul class="p-cards">
    <li class="p-cards__item p-card">
      <div class="p-card__img">
        <img src="images/dummy.png" alt="">
      </div>
      <h3 class="p-card__title">タイトル</h3>
      <p class="p-card___text">抜粋が入ります。抜粋が入ります。抜粋が入ります。抜粋が入ります。抜粋が入ります。</p>
      <div class="p-card__link-wrap">
        <a href="" class="p-card__link">詳細を見る</a>

      </div>
    </li>
    <li class="p-cards__item p-card">
      <div class="p-card__img">
        <img src="images/dummy.png" alt="">
      </div>
      <h3 class="p-card__title">タイトル</h3>
      <p class="p-card___text">抜粋が入ります。抜粋が入ります。抜粋が入ります。抜粋が入ります。抜粋が入ります。</p>
      <div class="p-card__link-wrap">
        <a href="" class="p-card__link">詳細を見る</a>

      </div>
    </li>
    <li class="p-cards__item p-card">
      <div class="p-card__img">
        <img src="images/dummy.png" alt="">
      </div>
      <h3 class="p-card__title">タイトル</h3>
      <p class="p-card___text">抜粋が入ります。抜粋が入ります。</p>
      <div class="p-card__link-wrap">
        <a href="" class="p-card__link">詳細を見る</a>

      </div>
    </li>

  </ul>
.p-cards {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	column-gap: 10px;
	row-gap: 10px;

}

.p-card {
	display: flex;
	flex-direction: column;
	height: 100%;
	position: relative;
}

.p-card__img {
	width: 100%;
	display: block;
}

.p-card img {
	width: 100%;
	height: 100%;
	display: block;
}


.p-card__title {
	font-size: 20px;

}

.p-card__link-wrap {
	margin-top: 10px;
}

.p-card__link {
	padding: 8px;
	display: inline-block;
	background: yellow;
}


.p-card___text {
	flex-grow: 1;
}

.p-card__link-wrap {
	margin-top: 10px;
}

いまはタイトルの行数が1行なので、タイトル直下の抜粋はそろっていますが、もしこれが複数行になった場合、以下のようになってしまいます。

カードの配置

例えば、ここでタイトル部分に行数制限をいれてみる。

.p-card__title {
	font-size: 20px;
	display: -webkit-box;
	overflow: hidden;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}
カードの配置

2行以上になったら「…」になるように調整。しかし、これでも抜粋部分がそろっていません。場合によってはここもそろえたい。

なので、flex-basisを追記。値には2行分のスペースを確保するように調整します。

.p-card__title {
	font-size: 20px;
	display: -webkit-box;
	overflow: hidden;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	flex-basis: 60px; /*追記*/
}
カードの配置

これでタイトル下部の抜粋部分がそろいました。テキスト量が多いときは行数制限のCSSで調整し、テキスト量が少ないときは上記の対応で。

ここまで読んでくださりありがとうございました。

この記事を書いた人