読み込み中...

CSS横スクロール完全マスター!初心者でもわかる作り方・使い方・応用例とサンプルコード集

CSS横スクロールの作り方と使い方を徹底解説 CSS
この記事は約11分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

こんにちは!

今回の記事では、CSS横スクロールの作り方、使い方、応用方法を初心者目線でとても詳しく徹底解説します。

サンプルコード付きで、分かりやすく解説していくので、初心者の方でも安心して学んでいけます。

それでは、始めていきましょう!

【1. CSS横スクロールとは?】

CSS横スクロールとは、Webページでコンテンツを水平方向にスクロールさせるデザイン手法です。

通常、Webページは縦方向にスクロールすることが一般的ですが、横スクロールを用いることで視覚的なインパクトを与えたり、コンテンツを効果的に配置することができます。

【2. CSS横スクロールの基本的な作り方】

それでは、まずはCSS横スクロールの基本的な作り方を見ていきましょう。

次のサンプルコードは、横スクロールを実現するための簡単なHTMLとCSSです。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>CSS横スクロールサンプル</title>
  <style>
    .scroll-container {
      white-space: nowrap;
      overflow-x: auto;
    }
    .item {
      display: inline-block;
      width: 200px;
      height: 200px;
      background-color: skyblue;
      margin: 10px;
    }
  </style>
</head>
<body>
  <div class="scroll-container">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
    <div class="item">4</div>
    <div class="item">5</div>
  </div>
</body>
</html>

このサンプルコードでは、.scroll-containerクラスが適用されたdiv要素内のコンテンツを横スクロールさせています。

CSSでwhite-space: nowrap;を設定することで、改行を無視し、overflow-x: auto;で水平方向のスクロールを有効にしています。

また、.itemクラスを適用したdiv要素には、display: inline-block;を設定して横並びにし、widthheightでサイズを指定しています。

【3. CSS横スクロールの使い方】

CSS横スクロールは、様々な場面で利用できます。

ここでは、いくつかの一般的な使い方を紹介します。

画像ギャラリー

横スクロールは、画像ギャラリーなどのコンテンツを効果的に表示するのに適しています。

例えば、商品一覧やスライドショーのようなコンテンツで、次のようなサンプルコードを使って横スクロールを実装できます。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>画像ギャラリー横スクロールサンプル</title>
  <style>
    .gallery-container {
      white-space: nowrap;
      overflow-x: auto;
    }
    .gallery-item {
      display: inline-block;
      width: 300px;
      height: 200px;
      background-size: cover;
      margin: 10px;
    }
  </style>
</head>
<body>
  <div class="gallery-container">
    <div class="gallery-item" style="background-image: url('image1.jpg');"></div>
    <div class="gallery-item" style="background-image: url('image2.jpg');"></div>
    <div class="gallery-item" style="background-image: url('image3.jpg');"></div>
    <div class="gallery-item" style="background-image: url('image4.jpg');"></div>
  </div>
</body>
</html>

このコードでは、.gallery-containerクラスが適用されたdiv要素内に、画像を背景に設定した.gallery-itemクラスのdiv要素を横並びに表示しています。

CSSでwhite-space: nowrap;を設定し、改行を無視して横スクロールを実現しています。

また、overflow-x: auto;で水平方向のスクロールを有効にしています。

【4. CSS横スクロールの応用方法】

ここでは、CSS横スクロールの応用方法を紹介します。

カード型デザイン

横スクロールを使って、カード型のデザインを作成することができます。

下記のサンプルコードは、カード型デザインの横スクロールを実装したものです。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>カード型デザイン横スクロールサンプル</title>
  <style>
    .card-container {
      white-space: nowrap;
      overflow-x: auto;
    }
    .card {
      display: inline-block;
      width: 300px;
      height: 400px;
      background-color: white;
      box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
      margin: 20px;
      padding: 20px;
    }
  </style>
</head>
<body>
  <div class="card-container">
    <div class="card">
      <h3>Card Title 1</h3>
      <p>Card description...</p>
    </div>
    <div class="card">
      <h3>Card Title 2</h3>
      <p>Card description...</p>
    </div>
    <div class="card">
      <h3>Card Title 3</h3>
      <p>Card description...</p>
    </div>
    <div class="card">
      <h3>Card Title 4</h3>
      <p>Card description...</p>
    </div>
  </div>
</body>
</html>

このサンプルコードでは、.card-containerクラスが適用されたdiv要素内に、.cardクラスのdiv要素を横並びに表示しています。

CSSでwhite-space: nowrap;を設定し、改行を無視して横スクロールを実現しています。

また、overflow-x: auto;で水平方向のスクロールを有効にしています。

【5. 応用例とサンプルコード】

ここでは、CSS横スクロールの応用例として、インフィニットスクロール(無限スクロール)の実装方法を紹介します。

下記のサンプルコードは、JavaScriptを使用してインフィニットスクロールを実装したものです。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>インフィニットスクロール横スクロールサンプル</title>
  <style>
    .infinite-scroll-container {
      white-space: nowrap;
      overflow-x: auto;
      position: relative;
    }
    .item {
      display: inline-block;
      width: 200px;
      height: 200px;
      background-color: skyblue;
      margin: 10px;
    }
  </style>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      const container = document.querySelector(".infinite-scroll-container");

      function loadMoreItems() {
        // ここで新しいアイテムを追加する処理を実装します。
        // 例えば、以下のようにダミーデータを追加することができます。
        for (let i = 0; i < 5; i++) {
          const newItem = document.createElement("div");
          newItem.classList.add("item");
          newItem.textContent = "New Item";
          container.appendChild(newItem);
        }
      }

      container.addEventListener("scroll", function() {
        const scrollLeft = container.scrollLeft;
        const scrollWidth = container.scrollWidth;
        const clientWidth = container.clientWidth;

        // スクロールが右端に到達したら、新しいアイテムを追加する
        if (scrollLeft + clientWidth >= scrollWidth) {
          loadMoreItems();
        }
      });

      // 初期アイテムのロード
      loadMoreItems();
    });
  </script>
</head>
<body>
  <div class="infinite-scroll-container"></div>
</body>
</html>

このサンプルコードでは、.infinite-scroll-containerクラスが適用されたdiv要素内に、.itemクラスのdiv要素を横並びに表示しています。

CSSでwhite-space: nowrap;を設定し、改行を無視して横スクロールを実現しています。

また、overflow-x: auto;で水平方向のスクロールを有効にしています。

JavaScriptを使って、スクロールが右端に到達したら新しいアイテムを追加する処理を実装しています。

これにより、ユーザーがスクロールしていくと、自動的に新しいアイテムが追加されるインフィニットスクロールが実現できます。

まとめ

この記事では、CSS横スクロールの作り方、使い方、応用方法を初心者目線で詳しく解説しました。

横スクロールは、画像ギャラリーや商品一覧などのコンテンツを効果的に表示するのに適しており、さまざまな応用例が考えられます。

今回紹介した応用例としては、カード型デザインの横スクロールやインフィニットスクロール(無限スクロール)があります。

これらの応用例を参考に、自分のウェブサイトやプロジェクトに横スクロールを取り入れて、ユーザーにとって使いやすく魅力的なデザインを実現してください。