CSSのtop・right・bottom・leftの使い方を完全解説!初心者でもわかる位置指定ルール
生徒
「先生、CSSで要素を上下左右に動かすにはどうすればいいですか?」
先生
「CSSでは、positionプロパティと組み合わせてtop、right、bottom、leftを使うことで、要素の位置を自由に調整できます。」
生徒
「positionプロパティって何ですか?」
先生
「positionは、要素の配置方法を決めるCSSプロパティです。例えば、relative、absolute、fixed、stickyの4種類があります。top・right・bottom・leftは、これらの位置指定と一緒に使うことで動作が変わります。」
生徒
「どの順番で使うと理解しやすいですか?」
先生
「まずはrelativeで親要素を基準に動かす方法、absoluteで親要素基準の絶対位置指定、fixedで画面基準の固定、そしてstickyでスクロールに応じた固定を見ていきましょう。」
1. top・right・bottom・leftの基本動作
CSSのtop・right・bottom・leftは、要素を配置する「距離」を指定するためのプロパティです。 これらは単独では動作せず、必ずpositionプロパティ(位置決めのルール)とセットで使います。 プログラミング未経験の方でも、「基準点からどのくらい離すか」を指示するものだと考えると分かりやすくなります。
指定できる単位は、px(ピクセル)で固定値を決めるほか、%(パーセント)を使って親要素の大きさに合わせたり、emを使って文字サイズ基準で動かしたりすることが可能です。
例えば、top: 20px;と記述した場合、「上端から20px押し下げる」という指示になります。
逆に、要素を上に動かしたい場合はマイナスの値(例:-10px)を使うこともあります。
<style>
.base-box {
position: relative; /* 位置調整を有効にする設定 */
top: 30px; /* 上から30pxの位置へ移動 */
left: 50px; /* 左から50pxの位置へ移動 */
width: 150px;
height: 100px;
background-color: #0d6efd;
color: white;
display: flex;
align-items: center;
justify-content: center;
border-radius: 8px;
}
</style>
<div class="base-box">
30px下、50px右
</div>
ブラウザ表示
上のサンプルでは、本来表示されるはずの場所から、下方向と右方向に隙間を作って移動させています。 このように「四方のどこを基準に、どれだけ距離を置くか」を制御するのが、これら4つのプロパティの役割です。 ただし、positionの値がstatic(初期値)のままだと、これらの数値を指定しても一切反映されないという重要なルールを覚えておきましょう。
2. position: relativeとtop・leftの組み合わせ
position: relativeは、要素を「現在の本来あるべき位置」を基準にして動かす設定です。 プログラミング未経験の方には、「自分の席(元の位置)から、どのくらいズレるか」を指定するとイメージすると分かりやすいでしょう。
この設定の最大の特徴は、要素を動かしたとしても、元の場所に要素が存在していた分のスペースがそのまま残るという点です。 そのため、周りの他の要素(文章や画像)の配置を崩すことなく、特定の要素だけを微調整したいときに非常に重宝します。
<style>
.sample-container {
background-color: #f8f9fa;
padding: 20px;
border: 1px solid #dee2e6;
}
.relative-box {
position: relative; /* 元の位置を基準にする */
top: 20px; /* 上から20px押し下げる */
left: 30px; /* 左から30px右へ動かす */
background-color: #ffc107;
padding: 20px;
width: 180px;
text-align: center;
font-weight: bold;
border-radius: 5px;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.next-text {
background-color: #e9ecef;
padding: 10px;
}
</style>
<div class="sample-container">
<div class="relative-box">
ここが動く要素です
</div>
<div class="next-text">
後ろに続く要素(位置は変わりません)
</div>
</div>
ブラウザ表示
上の例を見ると、黄色のボックスが本来表示される位置から「20px下」「30px右」に移動しているのが分かります。 しかし、その下にあるグレーのテキストの位置は、黄色いボックスが移動しても上に詰められることはありません。
このように、レイアウトの全体像を壊さずに「ロゴを少しだけ右に寄せたい」「アイコンを数ピクセルだけ上に上げたい」といった直感的なデザイン調整に最適なのが、このrelativeと距離指定の組み合わせです。
3. position: absoluteとtop・right・bottom・leftの組み合わせ
absoluteは、親要素を基準に絶対位置を指定します。親要素にposition: relativeを設定していれば、その親の中で位置が決まります。
<style>
.parent {
position: relative;
width: 300px;
height: 200px;
background-color: #e9ecef;
margin-bottom: 20px;
}
.absolute-box {
position: absolute;
top: 20px;
right: 20px;
background-color: #0d6efd;
color: white;
padding: 10px;
}
</style>
<div class="parent">
<div class="absolute-box">absolute + top/right</div>
</div>
ブラウザ表示
absoluteは親要素の左上を基準にtopやrightで位置を指定します。
4. position: fixedとtop・leftの組み合わせ
fixedは画面を基準に位置を固定します。スクロールしても動かず、ナビゲーションバーやヘッダーに便利です。
<style>
.fixed-box {
position: fixed;
top: 10px;
left: 10px;
background-color: #198754;
color: white;
padding: 10px;
}
</style>
<div class="fixed-box">fixed + top/left</div>
<div style="height:800px;"></div>
ブラウザ表示
スクロールしても画面の上から10px、左から10pxの位置に固定されています。
5. position: stickyとtopの組み合わせ
stickyはスクロールに応じて固定される特性があります。topを指定すると、その位置までスクロールしたら止まります。
<style>
.sticky-header {
position: sticky;
top: 0;
background-color: #ffc107;
padding: 10px;
font-weight: bold;
}
.content {
height: 1200px;
background-color: #f8f9fa;
padding: 20px;
}
</style>
<div class="sticky-header">sticky + top</div>
<div class="content">長い記事の内容</div>
ブラウザ表示
スクロールするとsticky-headerが画面上部で止まり、ユーザーが内容を見失わないように固定されます。
6. top・right・bottom・leftを使うときのルールまとめ
- relativeでは元の位置を基準にずれる
- absoluteでは親要素を基準に絶対位置を指定
- fixedでは画面全体を基準に固定
- stickyではスクロールに応じてtopやbottomで固定
- 単位にはpxや%などを使い、親要素や画面に対する距離を設定
これらの基本ルールを押さえると、ページ上での要素配置が自由にでき、ナビゲーションや広告、見出しなどのUIを整えることができます。
この記事を読んだ人からの質問
プログラミング初心者からのよくある疑問/質問を解決します
CSSの「top」「right」「bottom」「left」というプロパティは、どのような役割を持っているのでしょうか?初心者にもわかりやすく教えてください。
CSSの「top」「right」「bottom」「left」は、Webページ上の要素を「上下左右」のどの位置に配置するかを指定するためのプロパティです。これらは「位置指定プロパティ」と呼ばれ、要素を現在の場所から移動させたり、特定の親要素や画面全体の端からどれくらい離すかを決めるために使います。例えば「top: 20px;」と指定すれば、基準となる場所から20ピクセル分、下に押し下げるような動きになります。ただし、これら単体では動作せず、必ず「position」プロパティとセットで使うというルールがあります。
【60分集中】Flexboxを完全攻略!最新CSS3で「崩れない・迷わない」モダンUI構築セミナー
「魅せる力」をコードで実現。CSS3でモダンWebデザインのプロトタイピングを。
本講座では、単に色を変えるだけではなく、「ユーザーを迷わせないUIデザイン」と「崩れないレイアウト設計」の本質を学びます。最新のCSS3とモダンなレイアウト手法を通じて、プロの現場で通用する「美しさと機能性を両立した実装力」を最短距離で習得します。
具体的なワークショップ内容と環境
【つくるもの】
HTMLで作成した骨組みに対し、商用サイトでも採用される「スタイリッシュなカード型UI」や「レスポンシブなナビゲーション」を構築します。色の選定基準や余白(ホワイトスペース)の黄金比など、デザインの理論をコードに落とし込む工程を体験してください。
【開発環境】
フロントエンド開発の標準であるVisual Studio Code (VS Code)を継続使用。CSSの記述を効率化するプラグインや、ブラウザのデベロッパーツール(検証機能)を駆使して、リアルタイムでデザインを微調整するプロのワークフローを再現します。
この60分で得られる3つの技術資産
要素の横並びや中央揃えを自由自在に操り、どんなデバイスでも崩れないレスポンシブな配置術を完全理解します。
後から修正しやすい「壊れにくいコード」の書き方を伝授。プロの現場で必須となる命名規則の考え方を学びます。
画像の最適化や軽量な装飾技法など、ページの表示速度を落とさずに高級感のある演出を行うテクニックを習得します。
※本講座は、HTMLの基礎を終えた後のステップアップ講座です。Webデザイナー、UIデザイナー、フロントエンドエンジニアへの道を切り開く「魅せる技術」を、モクモク独自のパーソナル指導で着実に定着させます。
リラックスしながら、学ぶことが大切です。しっかりと基礎を理解しましょう!
各回少人数・マンツーマン形式で徹底サポート
このセミナーの詳細・お申し込みはこちら