最近フロントエンドのレイアウトを主に実装しているのですが、要素を何となくで配置していたところバグが発生したときの対処が素早くできくなってしまったので、CSSで要素を配置する方法について改めて理解し直したのでまとめておきます。
*参考
- MDN web docs / align-items
- MDN web docs / justify-content
- MDN web docs / flex-direction
- もう迷わない!CSS Flexboxの使い方を徹底解説
*Flexbox
CSS3から導入されたモジュールで、レスポンシブを簡潔なコードで実装できるなどといったメリットがあります。コンテナ(親要素)とアイテム(子要素)によって構成されます。*Flexboxで親要素に使うプロパティ
-
flex-direction
アイテムの並び順を指定します。row
で左から右への水平方向、column
で上から下への垂直方向になります。逆順の指定も可能です。
-
justify-content
アイテムの水平方向の位置を指定します。アイテムの間や周囲に配置する間隔を指定することができ、center
で左右中央揃えに配置することができます。
-
align-items
アイテムの垂直方向の位置を指定します。center
で上下中央揃えに配置することができます。
*Flexboxで子要素に使うプロパティ
-
flex
伸び率、縮み率、ベースの幅を指定することができます。(flex-grow / flex-shrink / flex-basis をまとめて指定します)
-
align-self
アイテムの垂直方向の位置を指定します。
*Flexbox以外
-
vertical-align
テキストの縦軸方向の位置を指定します。middle
で行の中央に配置することができます。height
で高さが指定されていないと効きません。
-
text-align
<span>, <label>
といったインラインの子要素を左右中央寄せにします。ブロック要素は中央寄せにならないのでdisplay: inline-block;
でインライン要素にする必要があります。
*所感
中央寄せがうまくいかなかったとき、原因を特定せずに適当に中央寄せになりそうなプロパティを指定していたのですが、今後は原因を考えて適切なプロパティを指定しようと思います。Sign up here with your email
ConversionConversion EmoticonEmoticon