【CSS入門】positionの使い方を簡単解説【ちょっと難しい?】

更新日:

この記事では要素の配置方法を指定する、CSSのpositionプロパティについて解説します。

absoluterelative・・・と聞くとWebデザインの勉強を始めたばかりだと難しく感じてしまいますが、これを使いこなすと自由なレイアウトができるので確実に理解しておきましょう。

positionとは?

要素の配置方法を指定します。

positionと一緒に使うプロパティ

positionで配置方法を決めたら、具体的に配置位置を指定する為にtop,right,bottom,leftやz-indexというプロパティを併用します。

単位はpx、%がよく使われ、マイナスの値を指定することもできます。ただしこれら全て、positionstatic(デフォルト値)だと使用出来ないので注意が必要です。

プロパティ 説明
top 基準位置の上からの数値を指定
right 基準位置の右からの数値を指定
bottom 基準位置の下からの数値を指定
left 基準位置の左からの数値を指定
z-index ボックスの重なり順を指定。数字が多いほど上に表示
【CSS入門】z-indexを使えば要素の重なり順は思うがまま

この記事ではCSSのz-indexプロパティについて解説します。 Contentsz-indexとは?z-indexの使い方z-index: auto;z-index: 整数;まとめ z-indexと ...

続きを見る

positionの使い方

positionに指定できる配置方法(値)は以下の通りです。

説明
static デフォルト。配置方法を指定しない
relative 本来の表示位置(static)から相対的な位置を指定
absolute 親要素からの絶対的な位置を指定
fixed ウィンドウの決まった位置に固定。スクロールしても位置が変わらない

position: static;

positionの初期値がこれです。topやleft、z-indexなどのプロパティを指定しても効かず、配置位置と重なり順を変えることはできないのでstaticを指定することは、ほとんどありません。

しかし指定したpositionを打ち消すことができる>ので、レスポンシブデザインでは重宝します。

position: relative;

本来の表示位置(static)から相対的な位置を指定します。下記の例の場合、BOX-Bは本来の表示位置の上から100px、左から200px移動するように指定しています。

relativeを指定すると移動させた要素の高さは元の場所に残るので、BOX-CはBOX-Bの元の位置の下に配置されています。

HTML

<div class="parent">
  <div class="BOX-A">BOX-A</div>
  <div class="BOX-B">BOX-B</div>
  <div class="BOX-C">BOX-C</div>
</div>

CSS

.BOX-A,.BOX-B,.BOX-C{
  width: 300px;
  height: 150px;
}

.BOX-B{
  position: relative;
  top: 100px;
  left: 200px;
}

位置を指定する以外にも、staticでは効かないz-indexを効かせるためや、absoluteの開始位置として使用する場面がかなりあります。

position: absolute;

親要素からの絶対的な位置を指定します。

absoluteを使う時は親要素にrelativefixedを指定する必要があり、指定をしないとウィンドウの左上が基準位置となってしまいます。

使用例①

下記の例の場合、親要素にrelativeを指定していないので、、BOX-Bはウィンドウの左上を基準に上から100px、左から200px移動するように指定しています。

absoluteを指定すると要素は高さがなくなって浮いたような状態になるので、BOX-CはBOX-Bの元の位置に詰めて配置されています。

HTML

<div class="parent">
  <div class="BOX-A">BOX-A</div>
  <div class="BOX-B">BOX-B</div>
  <div class="BOX-C">BOX-C</div>
</div>

CSS

.BOX-A,.BOX-B,.BOX-C{
  width: 300px;
  height: 150px;
}

.BOX-B{
  position: absolute;
  top: 100px;
  left: 200px;
}

使用例②

もう一つ、WEBサイトを制作していると画像の上に文字を配置したいときがよくあります。

そんなときは下記のように、画像を親要素としてrelativeを指定し、文字を子要素としてabsoluteを指定します。そして親要素の左上を基準とし、どこに子要素を配置したいかもtopなどを使い指定します。

HTML

<div class="bg">
  <p>テキスト<br>サンプルです</p>
</div>

CSS

.bg{
  position: relative;
  width: 100%;
  height: 700px;
  background: url(./images/main.jpg)no-repeat center center;
  background-size: cover;
}


p{
  position: absolute;
  top: 100px;
  left: 20px;
  color: #fff;
}

position: fixed;

ウィンドウの決まった位置に固定されるので、スクロールしても表示位置が変わりません。

位置の基準はウィンドウの表示領域全体です。

HTML

<div class="bg">
  <div class="BOX-A">BOX-A</div>
</div>

CSS

.bg{
  position: relative;
  width: 100%;
  height: 1000px;
  background: url(./images/main.jpg)no-repeat center center;
  background-size: cover;
}

.BOX-A{
  position: fixed;
  top: 0px;
  right: 0px;
}

まとめ

この記事に書かれていることで、特に覚えておいて欲しいことは以下の3点です。

  • staticはpositionを打ち消すためによく使う
  • z-indexを効かせたいときはrelativeを指定する
  • absoluteを使うときは親要素にrelativeかfixedを指定する

CSS関係の記事は他にも書いているので、宜しければそちらもチェックしてみてください。

【完全初心者向け】CSSについての超簡単まとめ

WEBサイトを作る上で、HTMLと並んで絶対に欠かせない言語といえばCSS。 この記事ではCSSについてなるべく難しい言葉を使わずに、でも要点は抑えて解説していこうと思います。是非肩の力を抜いて読み進 ...

続きを見る

【CSS入門】 inline?block?displayで要素の種類を指定しよう

この記事ではCSSのdisplayプロパティについて解説します。 CSSを学ぶにあたって絶対に避けては通れない重要な項目なので、しっかりと理解していきましょう。 Contentsdisplayとは?d ...

続きを見る

【CSS入門】tableとtable-cellで要素を横並びさせよう

この記事ではCSSのdisplayプロパティの値である、tableとtable-cellをセットで紹介します。 Flexboxの登場により使う機会がほとんど無くなりましたが、場合によってはまだまだ使う ...

続きを見る

【CSS入門】Flexboxの基本と使い方まとめ【そろそろ覚えたい】

この記事ではdisplayプロパティの値である、flex(Flexbox)を紹介します。 Flexboxを覚えることで、サイトを作る際にレイアウトを組むのがかなり楽になりますので、必ず使えるようにして ...

続きを見る

【CSS入門】z-indexを使えば要素の重なり順は思うがまま

この記事ではCSSのz-indexプロパティについて解説します。 Contentsz-indexとは?z-indexの使い方z-index: auto;z-index: 整数;まとめ z-indexと ...

続きを見る

【CSS入門】floatについて学んで初心者脱出しよう

この記事ではCSSの「float」プロパティについて解説します。 レイアウトをする際に物凄くお世話になるプロパティで、ここでつまづくとサイトを作ることが困難になってしまうので、しっかりと理解しておきま ...

続きを見る

【CSS入門】overflowで、はみ出し部分の表示を指定

この記事ではCSSのoverflowプロパティについて解説します。 Contentsoverflowとは?overflowの使い方overflow: visible;overflow: hidden; ...

続きを見る

-CSS

Copyright© Web Emo , 2024 All Rights Reserved.