CSSのrelativeとabsoluteの違いと使い分け方を徹底解説!初心者向け表示と位置指定
生徒
「先生、CSSでrelativeとabsoluteってよく出てくるんですけど、どう違うんですか?」
先生
「relativeは要素を元の位置から少しずらすときに使い、absoluteは親要素を基準に自由に配置するときに使います。」
生徒
「元の位置からずらすって、具体的にどういうことですか?」
先生
「例えば文章の流れの中でボックスを少し右に動かしたい場合、relativeを使うと自然な並びを崩さずに移動できます。」
生徒
「なるほど。absoluteはどういうときに使うんですか?」
先生
「absoluteは親要素にrelativeを設定して、その中でボックスを自由に配置したいときに便利です。親を基準に好きな位置に置けます。」
1. relativeの特徴と使い方
CSSのposition: relative;(相対位置指定)は、要素を「本来表示されるはずの場所」を基準にして位置を微調整するプロパティです。大きな特徴は、要素を動かしても元のスペースがそのまま維持される点にあります。そのため、周囲のレイアウトを崩さずに、アイコンを少し上にずらしたり、重なり順を変更したりする場合に最適です。
プログラミング未経験の方でも理解しやすい例として、1列に並んだボックスの2番目だけを少し動かしてみましょう。relativeを使えば、他の要素を押し除けることなく、自分だけがひょいと移動するような動きを再現できます。また、後述するabsolute(絶対位置指定)の「基準点」としても頻繁に利用される、レイアウト構築の基本となる設定です。
<style>
.parent-box {
background-color: #f8f9fa;
padding: 20px;
border: 2px dashed #dee2e6;
}
.sample-item {
width: 250px;
height: 50px;
background-color: #007bff;
color: white;
text-align: center;
line-height: 50px;
margin-bottom: 10px;
}
/* relativeを適用するクラス */
.is-relative {
position: relative;
top: 20px; /* 上から20px移動 */
left: 30px; /* 左から30px移動 */
background-color: #28a745; /* 変化がわかりやすいよう緑色に */
}
</style>
<div class="parent-box">
<div class="sample-item">通常のボックス1</div>
<div class="sample-item is-relative">relativeで動かしたボックス2</div>
<div class="sample-item">通常のボックス3</div>
</div>
<p>緑色のボックス2だけが移動していますが、ボックス3の位置が変わっていない点に注目してください。これがrelativeの特徴です。</p>
ブラウザ表示
2. absoluteの特徴と使い方
CSSのposition: absolute;(絶対位置指定)は、要素を本来の文書の流れから切り離し、指定した基準点から「浮かせた状態」で自由に配置するプロパティです。最大の特徴は、周囲の要素が「そこに要素がないもの」として詰められる点と、親要素(基準となる要素)からの距離を数値で厳密に指定できる点にあります。
プログラミング未経験の方には、「透明なレイヤーを重ねるイメージ」と伝えると分かりやすいでしょう。通常の文字や画像の流れ(静的配置)を無視して、画面の右上や左下にピタッと固定したい場合に非常に強力なツールとなります。ただし、基準となる親要素にposition: relative;などが設定されていない場合、ブラウザの画面全体が基準になってしまうため注意が必要です。
以下のサンプルでは、薄い水色の親ボックスを基準にして、ピンク色のボックスを自由な位置へ配置しています。top(上からの距離)やleft(左からの距離)を書き換えるだけで、ミリ単位のレイアウト調整が可能です。
<style>
/* 基準となる親要素の設定 */
.parent-container {
position: relative; /* 子のabsoluteの基準点になります */
width: 100%;
max-width: 400px;
height: 200px;
background-color: #f0f8ff;
border: 2px solid #007bff;
margin: 10px 0;
}
/* 自由に配置したい子要素の設定 */
.floating-box {
position: absolute;
top: 30px; /* 上から30pxの位置 */
left: 50px; /* 左から50pxの位置 */
width: 120px;
height: 60px;
background-color: #ffc107;
color: #000;
text-align: center;
line-height: 60px;
font-weight: bold;
box-shadow: 2px 2px 5px rgba(0,0,0,0.2);
}
</style>
<div class="parent-container">
<div class="floating-box">配置指定OK</div>
</div>
<p>親要素の中で、上から30px、左から50pxの場所に「浮いて」表示されています。</p>
ブラウザ表示
このように、absoluteを使うと他の要素に干渉することなく、自由自在にパーツを配置できます。バッジをアイコンの右上に重ねたり、画像の上に説明文を載せたりする際によく使われる手法です。
3. relativeとabsoluteの違いと使い分け
relativeは要素の元の位置を基準にして少しずらすだけで、文章や他の要素の位置は影響を受けません。一方absoluteは親要素を基準に自由に配置でき、文章の流れに関係なく表示されます。
使い分けのポイントは、文章の流れを崩したくない場合はrelative、特定の位置にボックスを自由に置きたい場合はabsoluteを使うことです。
<style>
.container-relative {
position: relative;
width: 300px;
height: 150px;
background-color: #e0f7fa;
}
.box-relative-inside {
position: relative;
top: 10px;
left: 10px;
width: 80px;
height: 40px;
background-color: lightpink;
line-height: 40px;
text-align: center;
}
.box-absolute-inside {
position: absolute;
top: 50px;
left: 50px;
width: 80px;
height: 40px;
background-color: lightskyblue;
line-height: 40px;
text-align: center;
}
</style>
<div class="container-relative">
<div class="box-relative-inside">relative</div>
<div class="box-absolute-inside">absolute</
</div>
ブラウザ表示
4. relativeとabsoluteを使った応用例
CSSのposition: relative;とposition: absolute;を組み合わせる手法は、Webデザインにおいて最も頻繁に使われるテクニックの一つです。単体では「少しずらす」「自由に浮かせる」という機能ですが、組み合わさることで「親要素の中に子要素を固定する」という強力なレイアウト制御が可能になります。
プログラミング未経験の方におすすめの活用シーンは、画像の上に文字(キャプション)やバッジを重ねるデザインです。通常、HTMLでは画像と文字は重なりませんが、親要素(画像の外枠)を基準点(relative)に設定し、子要素(文字)を浮かせ(absolute)、配置場所を指定することで、カタログサイトやSNSのような洗練されたレイアウトが簡単に作れます。
以下のサンプルでは、写真の右上に「New」というバッジを、右下に価格を表示する例を作成しました。親要素の枠内にパーツがピタッと吸い付く感覚を体験してみてください。
<style>
/* 1. 親要素:ここを基準にするための設定 */
.card-container {
position: relative;
width: 150px;
height: 100px;
border: 1px solid #ddd;
}
.card-img {
width: 100%;
height: 100%;
object-fit: cover;
}
/* 2. 子要素:右上に配置するバッジ */
.badge-new {
position: absolute;
top: 0;
right: 0;
background-color: #ff4757;
color: #fff;
padding: 2px 8px;
font-size: 12px;
font-weight: bold;
}
/* 3. 子要素:右下に配置する価格 */
.price-tag {
position: absolute;
bottom: 5px;
right: 5px;
background-color: rgba(0, 0, 0, 0.7);
color: #fff;
padding: 2px 5px;
font-size: 11px;
}
</style>
<div class="card-container">
<img src="/img/sample150-100.jpg" alt="商品画像" class="card-img">
<div class="badge-new">New</div>
<div class="price-tag">¥2,980</div>
</div>
ブラウザ表示
このコードのポイントは、親要素にposition: relative;を指定している点です。これがないと、バッジや価格タグは「ブラウザの画面全体」を基準にして飛んでいってしまいます。この「親はrelative、子はabsolute」というセットは、ボタンにアイコンを添えたり、複雑なヘッダーを作ったりする際にも応用できる基本パターンとして覚えておきましょう。
まとめ
relativeとabsoluteの理解を整理しよう
この記事では、CSSの位置指定の基本となるrelativeとabsoluteの違いと使い分けについて解説しました。Web制作やフロントエンド開発において、レイアウトを自由にコントロールするためにはpositionプロパティの理解が欠かせません。特にrelativeとabsoluteは、多くのWebサイトのレイアウト設計やUIパーツの配置で利用される重要な仕組みです。
relativeは相対位置指定と呼ばれ、要素が本来表示される場所を基準にして位置を少しだけ移動させることができます。この特徴は、文書の流れを崩さないという点にあります。つまり、要素を動かしてもその要素が存在していたスペースはそのまま残るため、周囲のレイアウトに影響を与えにくいのです。アイコンを少し上に配置したり、テキストの位置を微調整したりする場面で非常に便利です。
一方absoluteは絶対位置指定と呼ばれ、要素を通常の文書の流れから切り離して自由な場所に配置できる方法です。absoluteを使用すると、要素はまるで浮いているような状態になり、topやleftなどのプロパティを使って細かく位置を指定できます。この方法は、画像の上にテキストを重ねたり、カードデザインのバッジ表示を行ったり、ボタンの横にアイコンを配置したりする場面で頻繁に使用されます。
重要なポイントとして覚えておきたいのは、absoluteは基準となる親要素が必要になることです。多くの場合、親要素にrelativeを設定し、その中でabsoluteを使うことで、親要素の内部を基準にした配置が可能になります。この組み合わせはWebデザインにおける基本パターンであり、レスポンシブデザインやカードレイアウト、バナー表示など幅広い場面で活用されています。
relativeとabsoluteを正しく理解することで、HTMLとCSSを使ったレイアウト構築が格段にスムーズになります。特に初心者の方は、まずrelativeで基準となる位置を理解し、そのあとabsoluteで自由配置を試してみると理解が深まります。Web制作の実務では、この二つを組み合わせて使うケースが非常に多く、ページデザインの柔軟性を大きく高めてくれます。
relativeとabsoluteを組み合わせた基本サンプル
次のサンプルでは、親要素にrelativeを指定し、その中でabsoluteを使ってラベルを配置する例を紹介します。このような構造はカードデザインや画像キャプションなど多くのサイトで使われています。relativeを基準としてabsoluteが配置される仕組みを実際に確認してみましょう。
<style>
.sample-card {
position: relative;
width: 150px;
border: 1px solid #cccccc;
}
.sample-card img {
width: 100%;
display: block;
}
.sample-label {
position: absolute;
top: 5px;
left: 5px;
background-color: #0d6efd;
color: white;
padding: 4px 8px;
font-size: 12px;
}
.sample-text {
padding: 10px;
font-size: 14px;
}
</style>
<div class="sample-card">
<img src="/img/sample150-100.jpg" alt="サンプル画像">
<div class="sample-label">おすすめ</div>
<div class="sample-text">
relativeとabsoluteを使ったカードデザインの例です。
</div>
</div>
ブラウザ表示
覚えておきたい使い分けのポイント
relativeとabsoluteを使い分けるときには、いくつかの基本的な考え方があります。まず、文章の流れを保ったまま少しだけ位置を調整したい場合はrelativeを使用します。例えばアイコンの高さを微調整したり、ボタンの位置を少し移動したいときなどです。
反対に、レイアウトの中で特定の位置に要素を配置したい場合はabsoluteを使用します。例えば画像の角にラベルを表示したり、カードの右上にバッジを置いたりする場合です。このような場合は、親要素にrelativeを設定しておくことで、配置が安定します。
この基本ルールを理解しておくだけでも、Webページ制作のレイアウト設計は非常にスムーズになります。HTMLとCSSを学び始めたばかりの方でも、relativeとabsoluteを正しく使えるようになることで、実践的なWebデザインを作れるようになります。シンプルな概念ですが、Web制作の現場では毎日のように使用される重要なテクニックです。
生徒
先生、relativeとabsoluteの違いがだいぶ分かってきました。relativeは元の位置を基準に少し動かす方法で、absoluteは自由な場所に配置する方法なんですね。
先生
その通りです。特に覚えておきたいのは、absoluteは単独で使うよりも、親要素のrelativeと組み合わせて使うことが多いという点です。
生徒
なるほど。だからカードデザインや画像の上に文字を重ねるときにrelativeとabsoluteが一緒に使われるんですね。
先生
その理解で正しいです。relativeは基準を作る役割、absoluteはその基準の中で自由に配置する役割と考えると覚えやすいでしょう。
生徒
Web制作のレイアウトを作るときは、まずrelativeで基準を決めて、そのあとabsoluteで細かい位置を調整するという流れですね。
先生
そうです。relativeとabsoluteを正しく使えるようになると、HTMLとCSSで作れるデザインの幅が大きく広がります。これからカードレイアウトやバナー配置などもぜひ試してみてください。
【60分集中】Flexboxを完全攻略!最新CSS3で「崩れない・迷わない」モダンUI構築セミナー
「魅せる力」をコードで実現。CSS3でモダンWebデザインのプロトタイピングを。
本講座では、単に色を変えるだけではなく、「ユーザーを迷わせないUIデザイン」と「崩れないレイアウト設計」の本質を学びます。最新のCSS3とモダンなレイアウト手法を通じて、プロの現場で通用する「美しさと機能性を両立した実装力」を最短距離で習得します。
具体的なワークショップ内容と環境
【つくるもの】
HTMLで作成した骨組みに対し、商用サイトでも採用される「スタイリッシュなカード型UI」や「レスポンシブなナビゲーション」を構築します。色の選定基準や余白(ホワイトスペース)の黄金比など、デザインの理論をコードに落とし込む工程を体験してください。
【開発環境】
フロントエンド開発の標準であるVisual Studio Code (VS Code)を継続使用。CSSの記述を効率化するプラグインや、ブラウザのデベロッパーツール(検証機能)を駆使して、リアルタイムでデザインを微調整するプロのワークフローを再現します。
この60分で得られる3つの技術資産
要素の横並びや中央揃えを自由自在に操り、どんなデバイスでも崩れないレスポンシブな配置術を完全理解します。
後から修正しやすい「壊れにくいコード」の書き方を伝授。プロの現場で必須となる命名規則の考え方を学びます。
画像の最適化や軽量な装飾技法など、ページの表示速度を落とさずに高級感のある演出を行うテクニックを習得します。
※本講座は、HTMLの基礎を終えた後のステップアップ講座です。Webデザイナー、UIデザイナー、フロントエンドエンジニアへの道を切り開く「魅せる技術」を、モクモク独自のパーソナル指導で着実に定着させます。
リラックスしながら、学ぶことが大切です。しっかりと基礎を理解しましょう!
各回少人数・マンツーマン形式で徹底サポート
このセミナーの詳細・お申し込みはこちら