CSS で固定位置のレイアウトを作成する

CSSCSSBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、CSSを使って固定位置のレイアウトを作成する方法を学びます。CSSは、Webページ上の要素の配置を維持するための強力な技術です。この実験では、固定位置の概念を理解し、HTMLプロジェクト構造を設定し、サイド広告に固定位置を適用する方法を学び、ページスクロール中に要素が静止したままになる方法を探ります。

手順を追っていくことで、position: fixedのようなCSSの位置指定プロパティを使った実践的なスキルを身につけ、topbottomleftrightプロパティを使って要素の配置を正確に制御する方法を学びます。この実験では、ページスクロールに関係なくその位置を維持するレスポンシブで視覚的に一貫したレイアウトを作成するための実践的な経験を提供します。

固定位置の概念を理解する

このステップでは、CSSにおける固定位置について学びます。固定位置は、画面のスクロールに関係なく要素を固定された位置に維持する強力なレイアウト技術です。

固定位置は、CSSの位置指定方法の1つで、ページがスクロールされても要素が画面上の同じ位置に留まるようにします。他の位置指定方法とは異なり、固定要素はユーザーがページをスクロールしても移動しません。

簡単な例で基本概念を探ってみましょう:

<!doctype html>
<html>
  <head>
    <style>
      .fixed-element {
        position: fixed;
        top: 20px;
        right: 20px;
        background-color: #f1f1f1;
        padding: 10px;
        border: 1px solid #ddd;
      }
    </style>
  </head>
  <body>
    <div class="fixed-element">I'm a fixed element that stays in place!</div>
    <div style="height: 2000px;">
      Scroll down to see the fixed element remain in position
    </div>
  </body>
</html>

固定位置の主な特徴:

  • CSSにおいてposition: fixed;を使用する
  • ブラウザウィンドウに対して位置指定される
  • ページがスクロールされても移動しない
  • topbottomleftrightプロパティを使って正確に配置できる

ブラウザで表示したときの例の出力:

  • .fixed-elementは常に画面の上部と右から20ピクセルの位置に留まる
  • 画面を下にスクロールしても、この要素はまったく同じ画面位置に留まる

HTML プロジェクト構造をセットアップする

このステップでは、固定位置のレイアウトのデモ用のプロジェクト構造を作成します。CSSの位置指定の練習の基礎となる、~/project ディレクトリに簡単なHTMLプロジェクトをセットアップします。

まず、プロジェクトディレクトリに移動して必要なファイルを作成します。

cd ~/project
mkdir fixed-positioning-demo
cd fixed-positioning-demo

次に、基本的なHTMLファイル構造を作成します。

touch index.html
touch styles.css

index.html ファイルを開いて、次の基本的なHTML構造を追加します。

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Fixed Positioning Layout Demo</title>
    <link rel="stylesheet" href="styles.css" />
  </head>
  <body>
    <div class="content">
      <h1>Fixed Positioning Layout</h1>
      <p>This is a sample page to demonstrate fixed positioning in CSS.</p>

      <!-- 後続のステップでさらにコンテンツを追加します -->
    </div>
  </body>
</html>

初期のスタイリング付きで基本的なCSSファイル styles.css を作成します。

body {
  font-family: Arial, sans-serif;
  line-height: 1.6;
  margin: 0;
  padding: 0;
}

.content {
  max-width: 800px;
  margin: 0 auto;
  padding: 20px;
}

例の出力構造:

~/project/fixed-positioning-demo/
├── index.html
└── styles.css

このセットアップは、固定位置の技術をデモするための、クリーンで簡単なプロジェクト構造を提供します。これを基にして、次のステップで固定位置の技術を展開していきます。

サイド広告に固定位置を適用する

このステップでは、CSSを使って固定位置のサイド広告を作成する方法を学びます。スクロール中も固定されたままのサイド広告要素を追加するために、index.htmlstyles.css ファイルを変更します。

サイド広告要素を含むように index.html ファイルを更新します。

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Fixed Positioning Layout Demo</title>
    <link rel="stylesheet" href="styles.css" />
  </head>
  <body>
    <div class="left-ad">
      <h3>Left Side Ad</h3>
      <p>This ad stays in place!</p>
    </div>

    <div class="right-ad">
      <h3>Right Side Ad</h3>
      <p>Another fixed advertisement</p>
    </div>

    <div class="content">
      <h1>Fixed Positioning Layout</h1>
      <p>Scroll down to see how the side advertisements remain fixed.</p>

      <!-- スクロール効果を作成するためにさらにコンテンツを追加 -->
      <div style="height: 2000px;">Long content to demonstrate scrolling</div>
    </div>
  </body>
</html>

広告に固定位置を適用するように styles.css ファイルを変更します。

body {
  font-family: Arial, sans-serif;
  line-height: 1.6;
  margin: 0;
  padding: 0;
}

.content {
  max-width: 800px;
  margin: 0 auto;
  padding: 20px;
}

.left-ad,
.right-ad {
  position: fixed;
  width: 150px;
  background-color: #f4f4f4;
  padding: 10px;
  border: 1px solid #ddd;
}

.left-ad {
  left: 20px;
  top: 50%;
  transform: translateY(-50%);
}

.right-ad {
  right: 20px;
  top: 50%;
  transform: translateY(-50%);
}

固定位置に関するポイント:

  • position: fixed; により広告が一定の位置に留まる
  • leftright プロパティにより広告を画面の端に配置する
  • top: 50%transform: translateY(-50%) により広告を垂直方向に中央に配置する

ブラウザでの例の出力:

  • 2つのサイド広告が画面に固定されて表示される
  • ページをスクロールしても広告が固定されたままである
  • 広告が画面の垂直方向の中央に配置される

top と right プロパティを使って要素の配置を調整する

このステップでは、toprightbottomleft プロパティを使って固定位置の要素の配置を精密に制御する方法を学びます。これらのCSSプロパティを使うと、固定要素を画面上の任意の場所に配置できます。

さまざまな配置技術を示すために styles.css ファイルを更新します。

/* 以前のスタイルは同じまま */

.left-ad {
  position: fixed;
  top: 20px; /* 画面上部から20ピクセル */
  left: 20px; /* 画面左辺から20ピクセル */
  width: 150px;
  background-color: #f4f4f4;
  padding: 10px;
  border: 1px solid #ddd;
}

.right-ad {
  position: fixed;
  top: 50%; /* 垂直方向に中央揃え */
  right: 20px; /* 画面右辺から20ピクセル */
  width: 150px;
  transform: translateY(-50%); /* 完全な中央揃えのために調整 */
  background-color: #e4e4e4;
  padding: 10px;
  border: 1px solid #ccc;
}

.bottom-ad {
  position: fixed;
  bottom: 20px; /* 画面下部から20ピクセル */
  left: 50%; /* 水平方向に中央揃え */
  width: 300px;
  transform: translateX(-50%); /* 完全な中央揃えのために調整 */
  background-color: #d4d4d4;
  padding: 10px;
  text-align: center;
  border: 1px solid #bbb;
}

新しい下部広告を含むように index.html を更新します。

<body>
  <div class="left-ad">
    <h3>Left Side Ad</h3>
    <p>Positioned 20px from top-left</p>
  </div>

  <div class="right-ad">
    <h3>Right Side Ad</h3>
    <p>Vertically centered</p>
  </div>

  <div class="bottom-ad">
    <h3>Bottom Ad</h3>
    <p>Centered at the bottom of the screen</p>
  </div>

  <div class="content">
    <h1>Fixed Positioning Layout</h1>
    <p>Explore different positioning techniques</p>

    <div style="height: 2000px;">Scroll to see fixed elements</div>
  </div>
</body>

重要な配置プロパティの説明:

  • top:画面上部からの距離
  • right:画面右辺からの距離
  • bottom:画面下部からの距離
  • left:画面左辺からの距離
  • transform:完全な中央揃えのための配置の微調整

ブラウザでの例の出力:

  • 左辺の広告:左上隅から20ピクセル
  • 右辺の広告:右辺に垂直方向に中央揃え
  • 下部の広告:画面下部に中央揃え
  • すべての要素はスクロール中も固定されたまま

固定要素のスクロール挙動をテストする

このステップでは、固定位置の要素の独自のスクロール挙動を調べます。ページがスクロールされてもこれらの要素が静止したままであることを示すために、より多くのコンテンツを追加します。

スクロール用のコンテンツを追加するために index.html ファイルを更新します。

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Fixed Positioning Scroll Test</title>
    <link rel="stylesheet" href="styles.css" />
  </head>
  <body>
    <div class="left-ad">
      <h3>Left Ad</h3>
      <p>I stay in place!</p>
    </div>

    <div class="right-ad">
      <h3>Right Ad</h3>
      <p>Always visible</p>
    </div>

    <div class="bottom-ad">
      <h3>Bottom Ad</h3>
      <p>Fixed at bottom</p>
    </div>

    <div class="content">
      <h1>Scrolling Behavior Demonstration</h1>

      <div class="scroll-content">
        <h2>Scroll Down to See Fixed Elements</h2>

        <!-- スクロールを可能にするために長いコンテンツを作成 -->
        <div class="long-content">
          <h3>Long Content Section</h3>
          <p>
            このセクションでは、固定位置の要素がどのようにして配置のままであるかをスクロールしながら観察できます。
          </p>

          <!-- スクロール可能なコンテンツを作成するために段落を繰り返す -->
          <p>
            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam in
            dui mauris. Vivamus hendrerit arcu sed erat molestie vehicula.
          </p>

          <!-- 大幅なスクロール長を作成するために複数回繰り返す -->
          <p>
            Sed auctor neque eu tellus rhoncus ut eleifend nibh porttitor. Ut in
            nulla enim. Phasellus molestie magna non est bibendum non venenatis
            nisl tempor.
          </p>

          <!-- 同様の段落を複数回繰り返す -->
          <p>
            Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor
            posuere. Praesent id metus massa, ut blandit odio.
          </p>

          <!-- スクロール効果を作成するために段落を追加し続ける -->
          <p>
            Proin quis tortor orci. Etiam at risus et justo dignissim congue.
            Donec congue lacinia dui, a porttitor lectus condimentum laoreet.
          </p>

          <!-- スクロールを延長するためにさらに段落を追加 -->
          <p>
            Nunc dignissim risus id metus. Cras ornare tristique elit. Vivamus
            vestibulum nulla sit amet tristique reprehenderit.
          </p>
        </div>
      </div>
    </div>
  </body>
</html>

スクロールのデモを強化するために styles.css を更新します。

body {
  font-family: Arial, sans-serif;
  line-height: 1.6;
  margin: 0;
  padding: 0;
}

.content {
  max-width: 800px;
  margin: 0 auto;
  padding: 20px;
}

.long-content {
  background-color: #f9f9f9;
  padding: 20px;
}

/* 以前の固定位置指定のスタイルは同じまま */

固定位置指定に関する重要な観察結果:

  • 固定要素は同じ画面位置に留まる
  • スクロールはそれらの配置に影響を与えない
  • ページのスクロール位置に関係なく要素は常に表示される

例のスクロール挙動:

  • 左、右、下の広告は静止したままである
  • コンテンツは固定要素の後ろでスクロールする
  • 固定要素は常に画面上に表示される

まとめ

この実験では、参加者はCSSにおける固定位置指定について学びました。これは、ページのスクロールに関係なく要素を画面上に固定されたままにする強力なレイアウト技術です。position: fixed プロパティを使用することで、開発者はサイド広告やナビゲーションメニューなど、一定の位置に留まる要素を作成できます。これらの要素は、ユーザーがコンテンツをスクロールしても表示され続けます。

この実験では、固定位置指定を示す実際の例を作成する方法を学習者に案内しました。HTMLプロジェクト構造のセットアップや、要素の配置を精密に制御するための topright などのCSSプロパティの適用を含みます。参加者は、固定位置指定の重要な特性、すなわちブラウザウィンドウを参照することや、一定の画面位置を維持する能力について探求し、この重要なCSSレイアウト技術に関する実践的な経験を得ました。