11
10

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.

Flexboxで特定の要素を下揃えしようとしたらひっかかった話

Posted at

はじめに

初めまして r-higaと言います。システムの部署にいますが、普段はwebデザインをメインにフロントコーディングも少し行ってます。

今回はタイトルの通りflex-directionでリストカセット内のボタン位置を揃えようとしたら、ちょっとしたところでひっかかりもったいないオバケに時間を食べられてしまったので、備忘録として残しておきます。

結論

可変するカセット内にflex-directionをかけて要素を固定する場合は「margin: auto;」が必須でした。

詳細

真ん中部分のテキストが可変するリストカセットで、同行内の一番長いカセットに合わせて伸縮、ボタンが下部に固定されるレイアウトです。
1.png

で、引っ掛かったのがここ
レイアウト的に中央部分のテキストが可変のため、高さをpxや%などで固定せずにどうにか高さを持たせるために試行錯誤してました。
2.jpg

flexの縦並びの順番を決められるflex-directionの「column」なら、特定の要素が固定されて揃うだろう、となぜか思い込み下記だけを追加してました。今思うと絶対求めるレイアウトにならないのにね

li{
 display: flex;
 flex-direction: column;
}

追加後にウッキウキで確認すると、あれ?揃って…ない?
3.jpg

それもそのはず、flex-directionは「上から順番に並べるだけ」のプロパティなので、固定するには他のプロパティを追加しないといけないことを理解してなかったのでした…
これで固定されなかったので、テキストのタグにheight:100%;つけたり(すごく縦に伸びた)、ボタン要素をpositionで固定したり(テキストの上にボタンが乗る状態になりあれこれプロパティ追加しまくり)しましたが上手くいかず、最終的には固定したい要素に下記をつけることで解決しました。

.btn{margin-top: auto;}

基本の「margin:auto;」じゃん…!

「auto」だと指定した方向の余白がmarginの扱いになるので、今回のような可変のレイアウトにはすごく便利!
4.jpg

最終的なものがこちら

See the Pen flexboxのあれ by ion_neko (@ion_neko) on CodePen.

※IE11も対応範囲の場合は「width: calc()」からcalcを削除してpxか%で指定してください

いや~完成してよかった!!

おわりに

Flexbox好きなので使用してましたが、意外と特性をわかってませんでした。「わかっているつもり」って結構危ないと理解(わか)らされました…もっと勉強します

参考資料

colis(最終閲覧日:2021年7月12日)

11
10
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
11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?