MENU

カード3枚横並び

WEBサイト制作でかなりの頻度で出てくるカードタイプのコンテンツ3枚横並びを記述してみました。
なお、最近ではグリッドレイアウトで記述する人もいるかと思いますが、ここでは古典的な?
フレックスボックスで記述してみました。

①HTML

<div class="cards">
    <a href="#" class="card">
      <div class="card__img">
        <img src="images/card1.jpg" alt="">
      </div>
      <div class="card__sentence">
        <p class="card__title">タイトルが入ります。タイトルが入ります。</p>
        <p class="card__text">説明文が入ります。説明文が入ります。説明文が入ります。
                              説明文が入ります。説明文が入ります。説明文が入ります。
                              説明文が入ります。説明文が入ります。説明文が入ります。
   
        </p>
      </div>
      <div class="card__bottom">
        <div class="card__category">カテゴリ</div>
        <div class="card__date">2021.07.20</div>
      </div>
    </a>
    <a href="#" class="card">
      <div class="card__img">
        <img src="images/card2.jpg" alt="">
      </div>
      <div class="card__sentence">
        <p class="card__title">タイトルが入ります。タイトルが入ります。</p>
        <p class="card__text">説明文が入ります。説明文が入ります。説明文が入ります。</p>
      </div>
      <div class="card__bottom">
        <div class="card__category">カテゴリ</div>
        <div class="card__date">2021.07.20</div>
      </div>
    </a>
    <a href="#" class="card">
      <div class="card__img">
        <img src="images/card3.jpg" alt="">
      </div>
      <div class="card__sentence">
        <p class="card__title">タイトルが入ります。タイトルが入ります。</p>
        <p class="card__text">説明文が入ります。説明文が入ります。説明文が入ります。</p>
      </div>
      <div class="card__bottom">
        <div class="card__category">カテゴリ</div>
        <div class="card__date">2021.07.20</div>
      </div>
    </a>
  </div>

➁CSS

.cards {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  padding-left: 20px;
  padding-right: 20px;

}
.cards::before {
    content: "";
    display: block;
    width: 32%;
    order: 1;
}
 .cards::after {
    content: "";
    display: block;
    width: 32%;
}
.card {
  width: 32%;
  display: flex;
  flex-direction: column;
  padding-top: 0px;
}

@media screen and (max-width: 768px) {
  .cards {
   flex-direction: column;
  }
  .card{
    max-width: 600px;
    width: 100%;
    margin: 0 auto;
    padding-top: 32px;
  }

}

.card__sentence {
  background-color: #ffffff;
  flex-grow: 1;
  padding-left: 24px;
  padding-right: 24px;
}

.card__title {
  font-weight: 500;
  font-size: 18px;
  line-height: 35px;
  letter-spacing: 1px;
  color: #333333;
}
@media screen and (max-width: 768px) {
  .card__title {
    padding-top: 6px;
  }
}

.card__text {
  font-size: 14px;
  line-height: 26px;
  letter-spacing: 1px;
  color: #333333;
  padding-top: 12px;

}
@media screen and (max-width: 768px) {
  .card__text {
    padding-top: 0px;
  }
}

.card__bottom {
  background-color: #ffffff;
  display: flex;
  justify-content: space-between;
  padding-top: 10px;
  padding-bottom: 24px;
  padding-left: 24px;
  padding-right: 24px;
}

.card__category {
  background-color: #F9F871;
  font-size: 14px;
  padding-left: 4px;
}
@media screen and (max-width: 768px) {
  .card__category {
    padding-left: 0px;
  }
}

.card__date {
  font-size: 14px;
}

●ポイント

1)カード1枚目のみコメントの量が増えても、カード3枚の高さをそろえるため、.card__sentenceに
  flex-grow: 1;を記述
2)カードの枚数が3枚以外の数でも、適切な配置にするため、 .cards::beforeと.cards::afterを記述
  特にHTMLからWordPress化する場合は、カード枚数が動的に変更となるため、必要不可欠
3)カードのコンテンツから、記事などのページに飛ぶことが多いため、あらかじめaタグを設置  

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次