1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

display:flexで横並びにした子要素の高さが変になってしまった時の対処法【HTML・CSS】

Posted at

#display:flexで横並びにした子要素の高さが変になってしまった時の対処法
最近携わった案件で使用した、テクニックとして定着していなかった技術について。
これからHTML・CSSを学ぶエンジニアのヒントになればと思います。
##もくじ
#####1. どういう問題が起きたか。
#####2. 問題に対する対処法。
#####3. align-itemsについて。
#####4. まとめ
##1. どういう問題が起きたか。
・よくあるカードを横並びにしたやつ。上辺の基準として揃えたい。
・子要素に当たるカードは body に当たる部分に、全方向 padding 10pxを入れて、borderで囲みたい。
・子要素の高さはそれぞれ異なり、内容は変更される可能であるため、決め打ちではなくheight:autoを使いたい。

#####以上の条件を踏まえて、
親要素をdisplay:flexとし、子要素を横並びにすると、一番長い高さに揃えられてしまった。

See the Pen by ShinEndo (@shinendo) on CodePen.

##2. 問題に対する対処法。
####display:flexを指定した要素に「align-items:flex-start」を追加。
※上との違いをわかりやすくするためにborderの色をred → blue に変更しています。

See the Pen by ShinEndo (@shinendo) on CodePen.

無事、bodyの全方向に padding 10pxを含んだカードができた。

##3. align-itemsについて。
####align-itemsは「flexboxの交差軸に対しての子要素の配置を決める」
※flex-direction:rowの場合はy軸方向の配置を。flex-direction:columnの場合はx軸方向の配置を。

flexboxのプロパティであるalign-itemsの初期値はalign-items:stretchである。
align-items:stretchはflexboxの子要素(flexboxアイテム)を伸縮する。

##4. まとめ
問題が生じた際、align-itemsの初期値がstretchであることを知らなかった。
というのも今まで、flexboxの子要素の高さは決め打ちしているものが多かったためである。
(あるいは、align-items:centerで中央揃えにしていた)

flexboxで複数個の子要素を並べる際は、align-itemsの指定をあらかじめしておくほうが、予期せぬ動きは避けられるだろう。

この機会に、align-items:flex-startを習得したい。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?