\ シェア /

FacBook
Twitter
LINE
はてブ
PPocket
ZeroPlus Media > L_HTML/CSS > Step5 > positionとtransformで要素を上下左右中央寄せしよう
positionとtransformで要素を上下中央寄せしよう

positionとtransformで要素を上下左右中央寄せしよう

2022/07/14

2022/07/29

今回は、positionプロパティとtransformプロパティを使って要素を上下左右中央寄せする応用のやり方を紹介します。

この方法はWebページにおけるファーストビューなどでよく使用する手法になるので、理屈で理解していきましょう。

この記事で身につく内容
  • positionを使用した、要素を上下左右中央寄せにする方法

 

positionプロパティ, transformプロパティの使い方を忘れた方は、「CSSのpositionプロパティを学ぼう」「CSSのtransformプロパティで要素を変形させよう」の記事を振り返ってみましょう。

 

 

上下左右中央寄せのやり方

早速、デモを見てみましょう。

See the Pen Untitled by ZeroPlus (@zeroplus-programming) on CodePen.

 

positionプロパティとtransformプロパティを理解している方であれば、上記のコードである程度意味を読み取れるかと思います。

ひとつずつポイントを見ていきましょう。

 

positionを指定する

中央寄せにしたい要素absoluteを指定し、位置の基準にしたい親要素relativeを指定します。

今回は中央寄せにしたい「ZeroPlus」というテキストに対してposition: absolute;、その移動の基準になる親要素である、.boxというクラス名がついたdivタグに対してposition: relative;をそれぞれ指定しました。

 

位置を指定する

次に親要素のどこに配置するかを指定します。

ちょうど中央にしたいので、

top:50%;
left:50%;

というように、上と左から50%という数値にします。

しかし、この段階ではちょうど中央の位置にしたはずが、実際に見ると中央から少しずれてしまっています。
なぜかというと、positionでは要素の左上の位置(画像の赤い点)が基準となって配置されるためです。

このずれを調整するために、次にtransformプロパティを使用して要素を少しだけ移動させます。

 

transformのtranslateを指定する

全体で見た時のずれを修正するために、transformを使用して調整します。コードは以下のようになります。

transform: translateX(-50%) translateY(-50%);

このようにして、中央に置きたい要素の半分の大きさだけ、左方向(translateX)と上方向(translateY)に戻しています。

図を見ていただくとイメージがより湧くと思います。

今回であれば「ZeroPlus」という文字の横幅の半分ぶん左に動き、縦幅の半分ぶん上に動きます。
このようにして、ちょうど親要素の中央に要素を置くことができるのです。

 

ちなみに、CodePenのデモコードでは、transform: translateX(-50%) translateY(-50%);ではなくて、transform: translate(-50%, -50%);としていますが、実はCodePenのようにtranslate()だけでtranslateX()translateY()の両方をまとめて指定することができます。

 

したがって、動かしたい要素に、

.text {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

という4行のコードをセットで使用することで、上下左右中央寄せをすることができます。

まとめ

このコードは理屈で理解すると、あらゆる場面で値を変えて使用することができます。

positionで上下左右中央にする方法を改めて確認すると、

  • 親要素の、上と左からそれぞれ50%の位置に指定する
  • 要素の縦・横それぞれ半分だけ戻るようにtransformで調整する

という二段階がありました。

ハンバーガーメニューでも上下左右中央寄せはしないものの、positionとtransformを組み合わせて使用します。
仕組みを理解して、使いこなせるようにしていきましょう。

\ 学んだことをSNSでシェアしよう /

この記事の執筆者

ZeroPlus Media変種部

ZeroPlus Media編集部

ZeroPlusは、「フリーランス特化型プログラミングスクール」です。ZeroPlus Mediaでは、フリーランスとして活躍する際に役立つ有益なプログラミングやWeb制作に関する情報を発信しています。

あなたの目的に合わせた2つのサービス

あなたの目的に合わせたZeroPlusの2つのサービス
基礎からフリーランスレベルまで本質的な学びを提供しています

完全無料!30日間で学びきれる
プログラミンスクールZeroPlus Gate

  • お金をかけずに、学習を進めたい
  • Webサイトを作れるようになりたい
  • メンターや講師に質問しながら学習したい

詳しくはこちらから

フリーランス特化型
プログラミングスクール ZeroPlus

  • プログラミング学習で悩んでいる
  • 仲間と一緒に学習したい
  • フリーランスとしての総合的な力を養いたい

詳しくはこちらから