前提・実現したいこと
横並び要素の高さを揃えたいのですが、高さが揃いません。
親要素に「display: flex;」を指定することで、子要素の高さは自動的に揃うと認識していますが、カード下部にあるテキスト部分の文字数が違うため、各要素の高さにズレが生じています。
文字数が異なる場合でも、高さが自動で揃うようにしたいと考えています。
発生している問題・エラーメッセージ
services__cardsクラスに「display:flex;」を指定することで、
card__bodyクラスの子要素については高さが揃っています。
しかし、その子要素であるcard__descriptionクラスの要素について高さが揃わないため、
文字数が異なる場合、要素の高さが異なってしまいます。
該当のソースコード
★html
<body> <section class="section services"> <h2 class="section__title" id="services">SERVICEs</h2> <div class="services__inner"> <ul class="services__cards"> <li class="services__card card wow fadeIn"> <div class="card__head"> <img src="https://placehold.jp/300x200.png" alt=""> </div> <div class="card__body"> <div class="card__title">タイトル</div> <div class="card__description">ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。 </div> </li> <li class="services__card card wow fadeIn"> <div class="card__head"> <img src="https://placehold.jp/300x200.png" alt=""> </div> <div class="card__body"> <div class="card__title">タイトル</div> <div class="card__description">ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。</div> </div> </li> <li class="services__card card wow fadeIn"> <div class="card__head"> <img src="https://placehold.jp/300x200.png" alt=""> </div> <div class="card__body"> <div class="card__title">タイトル</div> <div class="card__description">ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。</div> </div> </li> </ul> </div> </section> </body>★css
@charset "UTF-8";
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
font-size: 10px;
font-size: 0.625rem;
letter-spacing: .5em;
color: #333333;
font-family: "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "Noto Serif JP", sans-serif;
background-color: #ECECEC;
}
html, body, h1, h2, h3, h4, h5, h6, ul, ol, dl, li, dt, dd, p, div, span, img, a, table, tr, th, td, small, button, time, figure {
border: 0;
margin: 0;
padding: 0;
}
img {
width: 100%;
vertical-align: bottom;
}
ul, li {
list-style-type: none;
}
.section {
margin-bottom: 60px;
}
.section__title {
font-size: 36px;
font-size: 2.25rem;
text-align: center;
margin-bottom: 60px;
position: relative;
}
.section__inner {
margin: 0 auto;
padding: 0 4vw;
}
.services__inner {
max-width: 1200px;
margin: 0 auto;
padding: 0 30px;
}
.services__cards {
display: block;
}
@media (min-width: 768px) {
.services__cards {
display: flex;
}
}
.services__card {
width: 100%;
}
@media (min-width: 768px) {
.services__card {
width: calc(100%/3 - 20px*2/3);
}
}
.services__card + .services__card {
margin: 40px 0 0 0;
}
@media (min-width: 768px) {
.services__card + .services__card {
margin: 0 0 0 20px;
}
}
.card__body {
background-color: rgba(255, 255, 255, 0.5);
padding: 15px;
}
.card__description {
margin-top: 10px;
}
試したこと
Google Chromeのデベロッパーツールで確認したところ、
card__bodyクラスの要素について高さは揃っているようなので、
card__descriptionクラスの要素部分に係るCSS指定に問題があるかと思います。
インターネットで検索したところ、
上記部分で「flex-grow: 1;」を指定するという解決策を発見しましたが、
この方法では改善しませんでした。
補足情報(FW/ツールのバージョンなど)
作業環境はVSCODEです。
閲覧環境はGoogle Chromeになります。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/10 07:25