【CSS】Flexbox、flex-direction: column;とflex-grow: 1;を使ってボタンの位置を合わせる
- 更新
- デザインのメモ



実装してみる
「詳しくはこちら」のボタンの位置を同じにしてみます。これ、なにげに難しいです。
ポイントは
flex-directionで整えて、flex-growで揃える。
コードを見る(HTML・CSS)
HTML
<div class="oneArea">
<div class="oneBox">
<p class="one_title">1</p>
<div class="one_inner">
<div class="one_img"><img src="https://125naroom.com/wp/wp-content/themes/design125naroom/img/kinoko_pan.png" alt=""></div>
<p class="one_text">テキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト<strong class="one_underline">テキストテキスト</strong>テキストテキストテキストテキストテキスト</p>
</div>
<div class="one_btn"><a href="#" class="btn"><span class="b__text">詳しくはこちら</span></a></div>
</div>
<div class="oneBox">
<p class="one_title">2</p>
<div class="one_inner">
<div class="one_img"><img src="https://125naroom.com/wp/wp-content/themes/design125naroom/img/kinoko_pan.png" alt=""></div>
<p class="one_text">テキストテキストテキストテキストテキストテキストテキストテキスト<strong class="one_underline">テキストテキスト</strong>テキストテキスト</p>
</div>
<div class="one_btn"><a href="#" class="btn"><span class="b__text">詳しくはこちら</span></a></div>
</div>
<div class="oneBox">
<p class="one_title">3</p>
<div class="one_inner">
<div class="one_img"><img src="https://125naroom.com/wp/wp-content/themes/design125naroom/img/kinoko_pan.png" alt=""></div>
<p class="one_text">テキストテキストテキスト<strong class="one_underline">テキストテキスト</strong>テキストテキストテキスト</p>
</div>
<div class="one_btn"><a href="#" class="btn"><span class="b__text">詳しくはこちら</span></a></div>
</div>
</div>
CSS
/* ---------- 01 ボタンの位置を合わせる ---------- */
.oneArea {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
max-width: 1024px;
margin: 0 auto;
}
.oneArea .oneBox {
width: 32%;
padding: 20px;
background: #fff;
border: 2px solid #2b2a27;
box-sizing: border-box;
display: flex;
flex-direction: column;
}
.oneArea .oneBox p {
margin: 0;
}
.oneArea .oneBox p.one_title {
font-size: 20px;
text-align: center;
}
.oneArea .oneBox .one_inner {
flex-grow: 1;
}
.oneArea .oneBox .one_inner .one_img {
text-align: center;
margin-bottom: 10px;
}
.oneArea .oneBox .one_inner .one_img img {
max-width: 100%;
}
.oneArea .oneBox p.one_text {
font-size: 14px;
}
.oneArea .oneBox .one_underline {
background: linear-gradient(transparent 60%, #e8dc6a 0%);
}
.oneArea .oneBox > *:not(:last-child) {
margin-bottom: 15px;
}
/* ボタン */
a.btn {
display: flex;
align-items: center;
max-width: 500px;
margin: 0 auto;
padding: 1.0rem;
border: 2px solid #2b2a27;
background: #fff;
text-decoration: none;
transition: 0.3s;
}
a.btn:hover {
background-color: #f3efe6;
}
a.btn .b__text {
display: block;
flex-grow: 1;
color: #2b2a27;
font-weight: bold;
text-align: center;
position: relative;
padding-right: 15px;
font-size: 14px;
}
a.btn .b__text::after {
content: "";
position: absolute;
top: 0;
bottom: 0;
right: 0;
margin: auto;
transform: rotate(45deg);
border-top: 2px solid #2b2a27;
border-right: 2px solid #2b2a27;
box-sizing: border-box;
width: 8px;
height: 8px;
transition: 0.3s;
}
/* 動きを減らす設定のとき */
@media (prefers-reduced-motion: reduce) {
a.btn, a.btn .b__text::after { transition: none; }
}
制作メモ
flex-growは、IEでも問題ないですね。(2021年4月現在)
さいごに





