この記事は4分で読めます

【CSS】positionプロパティを使いこなそう!基本的な知識を解説

  • 投稿日
  • 更新日

あとで読む

【CSS】positionプロパティを使いこなそう!基本的な知識を解説

CSSを勉強し始めた方にとって、序盤の難関の一つといっても過言ではない「position」プロパティ。いっぱいあって混乱している方もいらっしゃるのではないでしょうか。

Webサイトを思い通りに表現するために必要不可欠なタグですので、全部覚えましょう!と言いたいところですが、最初はなかなか難しいので、「あれ?positionプロパティどれを使えばいいんだっけ?」となった時にこの記事を見ていただければと思います!

イッパイアッテナ

はじめまして、イッパイアッテナです。

ITと教養で、優秀なネコの手となり、あなたのあらゆる問題を解決します。あなたの相談役だったり、デザイナーだったり、広報だったり、わたしたちは”イッパイ”の顔をあなたに見せることができます。

positionとは?

positionはいつ使う?

表示している要素の表示位置を指定したい時に使います。何も指定しなければ、要素は互いに重ならずに縦に並んでいきます。これを重ねたり、画面に対して固定表示したい時にpositionを使います。

位置を指定するために「top」「right」「bottom」「left」「z-index」プロパティを併せて使用します。

positionプロパティは何がある?

positionプロパティは全部で5つあります。

プロパティ名使い方
static初期状態。「top」「right」「bottom」「left」「z-index」プロパティは効果がありません。
relative通常の位置を基準にして、上記のプロパティで位置を変更できます。
absolute親要素を基準に絶対位置を指定できます。
fixedウィンドウを基準に絶対位置を指定できます。
sticky初期位置は通常通りで、指定位置に来ると親要素の中でのみ固定されます。

これだけでは全くイメージがわからないと思います。ここでは5つプロパティがあるんだと理解いただければ大丈夫です。

次から各プロパティを詳しく解説します。

各プロパティの使い方について

static

positionの初期値なので、positionを指定しなければすべて「static」になります。「top」「right」などの位置指定をしても適用されません。

「じゃあ、一体いつ使うんだ?」と思う方がいらっしゃると思います。使いどころとしては、PC版は「relative」や「absolute」を使って、スマホ版は通常に戻したい時に「position:static」を使うことで元に戻すことができます。

relative

初期位置(topやleftなどの位置指定をしていない状態)では先ほどの「static」と同じですが、その位置を基準としてtopやleftなどで絶対位置を指定することができます。

relativeが指定された要素は、通常のフローからは除外されないので、元々あった場所のスペースは空いた状態が保たれます。

あまり単体で使う場面は見かけないように感じます。次に紹介するabsoluteとセットで覚えましょう!

absolute

基本的に親要素に「relative」を指定して基準を決めた上で、子要素に「absolute」を指定して位置を指定する使い方をします。absoluteを単体で使用することもできますが、基準の要素がわかりづらくなるので、relativeとabsoluteは基本的にはセットで使うことをおすすめします。

上の画像では、targetに「absolute」を指定しています。
targetの親要素にあたるcontainerに「relative」を指定しているので、containerの左上が基準になります。
そこからtop:50px; left:50px;を指定して、位置をずらしています。

absoluteを指定された要素は、通常のフローから除外されるので、targetの上下にあるhtml要素(グレーのボックス)の間にスペースは空きません。(targetが無かったことになります)

relativeとabsoluteを覚えると、CSSでの表現の幅がグーンと広がるので、是非覚えましょう!
(擬似要素も合わせるとさらに自由自在に表現ができるようになります)

fixed

fixedはウィンドウに対して要素を固定することができます。特に位置の指定がなければ、ウィンドウ左上が基準位置になります。

上の動画では、right: 0; bottom: 0;を指定しているので、右下に要素が固定されています。

これをよく使う例としては、画面に常に表示されて追従している広告やお問い合わせボタン、スマホ版でよく使うハンバーガーメニューから開くメニュー画面などが挙げられます。

ウィンドウに対して固定ということはスクロールと関係がなくなるので、基本的にはfixedを指定した要素が画面外にはみ出してもスクロールが効かないので注意が必要です。
(詳しく解説はしませんが、top: 0; bottom: 0; overflow-y: auto;を指定すると、fixed指定された要素の中もスクロールできるようになります)

sticky

言葉で解説すると余計混乱しそうな挙動をするstickyですが、上の動画のとおり、初めは通常通りに置かれ、指定した位置(動画の場合はtop: 200px;)に来ると、要素が固定されてfixedと似た動きをします。
ただ、ただ、stickyを囲んでいる要素(動画では赤枠の「container」)の終わりに引っ張られてスクロールされていくような挙動になります。

使い所としては、ファーストビューの下にあったメニューバーをスクロールに合わせて画面上部に固定させたり、左側は文章をずっとスクロールさせて、右側に文章に合わせた写真をスクロールに合わせて重ねていくなど、最近流行っているような表現には必要なプロパティだと思います。(一部JSが必要だったりしますが…)

ただし、このstickyですがsafariなどで対応していない場合があるので、stickyを指定したい場合には合わせて「position: -webkit-sticky;」を記述しておくといいと思います。

おわりに

positionプロパティについて解説しましたが、各プロパティで使い方や注意点などまだまだ書ききれないことがたくさんあります。それぞれのプロパティだけについて解説してくれているサイトやブログなども多数存在していますので、興味があったり、いざ使う際には是非調べてみてください!

この記事を書いた人

なしょ
なしょ

野球とカメラとスノボとゲームと…好きなものが多くて困ってます。 が、新しい世界へのお誘いもお待ちしています!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

Web制作について相談してみませんか?

必須は必須項目です。弊社へお問い合わせいただく方は、下記の「個人情報の取り扱いについて」を必ずお読みください。

会社名

任意

お名前

必須

メールアドレス

必須

電話番号

任意

お問い合わせ内容

必須