今回は、display: flex;とmargin: auto;を使って要素の高さを揃える方法について紹介します。
高さの違う要素を揃える時の参考にしてみてください。
【CSS】display: flex;とmargin: auto;を使って要素の高さを揃える方法
デモサイトはこちら。
See the Pen
Untitled by ゆーじろー (@yuji64)
on CodePen.
ブロックの真ん中にあるダミーテキストの高さがそれぞれ違いますが、ボタンの高さが揃っていることが分かるでしょう。
今回はボタンの高さをいつでも揃うような実装方法を紹介します。
HTML
HTMLコードはこちら。
<div class="wrap">
<div class="item">
<div class="item__image">
<img src="https://yujiromx.com/wp-content/uploads/2022/04/freelancer-g73d4de2a5_1280.jpg" alt="">
</div>
<h3 class="item__title">タイトルです</h3>
<p class="item__text">
ダミーテキストが入る予定です。ダミーテキストが入る予定です。ダミーテキストが入る予定です。ダミーテキストが入る予定です。ダミーテキストが入る予定です。ダミーテキストが入る予定です。ダミーテキストが入る予定です。
</p>
<div class="button">
<a href="">ボタン</a>
</div>
</div>
<div class="item">
<div class="item__image">
<img src="https://yujiromx.com/wp-content/uploads/2022/04/freelancer-g73d4de2a5_1280.jpg" alt="">
</div>
<h3 class="item__title">タイトルです</h3>
<p class="item__text">
ダミーテキストが入る予定です。ダミーテキストが入る予定です。ダミーテキストが入る予定です。ダミーテキストが入る予定です。ダミーテキストが入る予定です。
</p>
<div class="button">
<a href="">ボタン</a>
</div>
</div>
<div class="item">
<div class="item__image">
<img src="https://yujiromx.com/wp-content/uploads/2022/04/freelancer-g73d4de2a5_1280.jpg" alt="">
</div>
<h3 class="item__title">タイトルです</h3>
<p class="item__text">
ダミーテキストが入る予定です。ダミーテキストが入る予定です。ダミーテキストが入る予定です。
</p>
<div class="button">
<a href="">ボタン</a>
</div>
</div>
</div>
親要素wrapの中にitemボックスを3つ用意しました。
CSS
CSSコードはこちら。
.wrap {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
.wrap .item {
border: 1px solid black;
padding: 15px;
text-align: center;
width: 32%;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
}
.wrap .item:not(:first-child) {
margin-left: 2%;
}
.wrap .item__title {
font-size: 22px;
margin-top: 20px;
}
.wrap .item__text {
font-size: 15px;
line-height: 1.5;
margin-top: 20px;
text-align: left;
margin-bottom: 15px;
}
.wrap .item .button {
margin-top: auto;
}
.wrap .item .button a {
display: inline-block;
background-color: #264b67;
color: #fff;
padding: 15px 30px;
}
上記のコードの中で、ボタンの高さを揃える際には以下のコードがポイントとなります。
まずはボタンの親要素に当たるitemに対して「display: flex;」を指定して、「flex-direction: column;」で縦向きに戻します。
.wrap .item {
border: 1px solid black;
padding: 15px;
text-align: center;
width: 32%;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
}
そして子要素のボタンであるbuttonに対して「margin-top: auto;」を指定することで、margin-topの高さを自動調整し、ボタンの高さが揃うという仕組みです。
フレックスボックスとmarginのautoを使うことで高さを揃えることができるのはかなり便利でした。
まとめ
以上が、display: flex;とmargin: auto;を使って要素の高さを揃える方法でした。



