CSS を使用して fullpage.js のフルスクリーン スクロール効果を実装するサンプル コード

CSS を使用して fullpage.js のフルスクリーン スクロール効果を実装するサンプル コード

最近 CSS を勉強していたとき、 2 つの CSS プロパティだけを使用して全画面スクロール効果を作成できることを発見しました。

  • スクロールスナップタイプ
  • スクロールスナップ位置合わせ

これを使用すると、 fullpage.jsの全画面スクロール効果を実現できます。 実際、この全画面スクロール効果の理論は非常に単純です。つまり、 js を使用してインターフェイスのスクロールを監視し、インターフェイスが特定の値までスクロールすると、インターフェイスが次の画面にスクロールし続けるようにします。画面サイズによって生じる互換性の問題を考慮するのは非常に面倒です。

今日言及した 2 つのプロパティは、次の 2 つの理由によりfullpage.jsを置き換えることはできません。

  1. ブラウザとの互換性の問題があります。
  2. CSS プロパティはイベントをリッスンできないため、アニメーションが完了したときのコールバック関数を提供することはできません。

1. 互換性

現在、主流のブラウザはすでにこれら 2 つの CSS プロパティをサポートしているため、安心して使用できます。 IE ブラウザとの互換性が必要な場合は、 fullpage.js選択してください。

2. 使用

使用方法は実はとても簡単です。 scroll-snap-type属性は、フルスクリーンスクロールが必要なコンテナの親コンテナに配置し、 scroll-snap-alignフルスクリーンスクロールコンテナに配置する必要があります。これ以上説明する意味はありません。コードを直接見れば、この 2 つの CSS 属性の使い方がはっきりとわかります。

ウェブページ全体の完全なコードは非常にシンプルなので、以下に貼り付けるだけです。

<!DOCTYPE html>
<html lang="ja">
  <ヘッド>
    <メタ文字セット="UTF-8" />
    <meta http-equiv="X-UA-compatible" content="IE=edge" />
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0" />
    <title>CSS スクロール スナップ</title>
    <スタイル>
      体 {
        マージン: 0;
      }

      。容器 {
        高さ:100vh;
        overflow-y: スクロール;
        /* 親コンテナの scroll-snap-type プロパティを使用します */
        scroll-snap-type: y 必須;
      }

      セクション {
        パディング: 112px;
        高さ: calc(100vh - 224px);
        色: 白;
        /* スクロールする必要があるコンテナに scroll-snap-align プロパティを使用します */
        スクロールスナップ位置合わせ: 開始;
      }

      セクション:n番目の型(1) {
        背景色: #60af15;
      }

      セクション:n番目の型(2) {
        背景色: #158baf;
      }

      セクション:n番目の型(3) {
        背景色: #af1581;
      }

      セクション h3 {
        フォントサイズ: 48px;
      }

      セクション p {
        フォントサイズ: 20px;
      }
    </スタイル>
  </head>
  <本文>
    <div class="コンテナ">
      <セクション>
        <h3>ここにサブタイトルがあります</h3>
        <p>
          Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus
          失った尊厳は速やかに回復され、最大の利益が得られる
          voluptatibus。期間としてaccasamusは想定されます。
          結果的に過失が起こり、その結果、誤りが起こり、例外が起こります
          これは素晴らしいことですが、目立たず、目立つ場所に置くと、
          quo quod reiciendis は拒否されましたが、解決策はいつ見つかるでしょうか?
          運動はボリュームを反映する主な場所です
          voluptatum。広告はcommodi culpa cumque debitis delectus dolorum、eiusで
          エラーとexplicobはipsumで無意味ですiste labore laborum libero magni
          良い人であることがどういうことかは分かりませんが、
          recusandae reprehenderit saepe 同様の液体 vero vitae voluptas
          voluptatem! 素晴らしい。
        </p>
      </セクション>
      <セクション>
        <h3>ここにサブタイトルがあります</h3>
        <p>
          Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus
          失った尊厳は速やかに回復され、最大の利益が得られる
          voluptatibus。期間としてaccasamusは想定されます。
          結果的に過失が起こり、その結果、誤りが起こり、例外が起こります
          これは素晴らしいことですが、目立たず、目立つ場所に置くと、
          quo quod reiciendis は拒否されましたが、解決策はいつ見つかるでしょうか?
          運動はボリュームを反映する主な場所です
          voluptatum。広告はcommodi culpa cumque debitis delectus dolorum、eiusで
          エラーとexplicobはipsumで無意味ですiste labore laborum libero magni
          良い人であることがどういうことかは分かりませんが、
          recusandae reprehenderit saepe 同様の液体 vero vitae voluptas
          voluptatem! 素晴らしい。
        </p>
      </セクション>
      <セクション>
        <h3>ここにサブタイトルがあります</h3>
        <p>
          Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus
          失った尊厳は速やかに回復され、最大の利益が得られる
          voluptatibus。期間としてaccasamusは想定されます。
          結果的に過失が起こり、その結果、誤りが起こり、例外が起こります
          これは素晴らしいことですが、目立たず、目立つ場所に置くと、
          quo quod reiciendis は拒否されましたが、解決策はいつ見つかるでしょうか?
          運動はボリュームを反映する主な場所です
          voluptatum。広告はcommodi culpa cumque debitis delectus dolorum、eiusで
          エラーとexplicobはipsumで無意味ですiste labore laborum libero magni
          良い人であることがどういうことかは分かりませんが、
          recusandae reprehenderit saepe 同様の液体 vero vitae voluptas
          voluptatem! 素晴らしい。
        </p>
      </セクション>
    </div>
  </本文>
</html>

コードが複雑ではないことがわかります。これら 2 つの CSS プロパティに注目してみましょう。

3. スクロールスナップタイプ

この CSS プロパティには次の値があります。

none: このスクロール コンテナーの表示可能なビューポートがスクロールされても、処理は実行されません。

  • x : スクロール コンテナーは、水平軸上の位置にのみスナップします。
  • y : スクロール コンテナーは垂直軸上の位置にのみスナップします。
  • block: スクロール コンテナーは、ブロック軸上のスナップ位置にのみスナップします。
  • inline: スクロール コンテナーは、インライン軸上のスナップ位置にのみスナップします。
  • both: スクロール コンテナーは、両方の軸の位置に独立してスナップします (各軸の異なる要素にスナップする可能性があります)。
  • 必須: スクロール コンテナーをスクロールすると、臨界値を超えると自動的に次のコンテナーにスクロールします。
  • 近接性: スクロール コンテナーがスクロールされた場合、臨界値を超えると次のコンテナーに自動的にスクロールしなくなります。

注意する必要があるのは、上記の太字でmandatoryされたプロパティです。mandatory を使用すると、全画面スクロールになります。スクロールが一定のしきい値を超えると、自動的に次の画面にスクロールします。一定のしきい値を超えてスクロールしない場合は、リバウンドします。

proximityの違いは、一定のしきい値を超えてスクロールした後は通常通りスクロールできる(一方、 mandatory次の画面に直接進む)ことと、一定のしきい値を超えてスクロールしなかった場合はリバウンドすることです。

これら 2 つのプロパティを理解するのは実はとても簡単です。上記のコードを変更して、自分で体験してみてください。

注意:スクロール コンテナーの高さが画面の高さよりも既に大きい場合は、強制スクロールによって一部のコンテンツが読みにくくなる可能性があるため、 mandatoryは注意して使用してください。

4. スクロールスナップアライン

この CSS プロパティには次の値があります。

none: コンテナーは、親コンテナーで定義された対応する軸にスナップしません。 start: コンテナがキャプチャされる位置がコンテナの開始部分です。 end: コンテナがキャプチャされる位置がコンテナの終了位置になります。 center: コンテナがキャプチャされる場所はコンテナの中央部分です。

次の属性によって表されるコンテナの位置は、画像で明確に示せます。

5. 最後に

scroll-snapの他のプロパティのほとんどには重大な互換性の問題があることがわかったため、ここでは詳しく説明しません。興味がある場合は、CSS Scroll Snap にアクセスして直接確認してください。ただし、上記の 2 つのプロパティを使用するだけで十分です。

参考記事:

スクロールスナップアラインメント MDN

スクロールスナップ型 MDN

実用的な CSS スクロール スナップ

以上で、fullpage.js のフルスクリーンスクロール効果を CSS で実装するサンプルコードについての説明は終了です。CSS フルスクリーンスクロールに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  JavaScript で実装された 6 つの Web ページ画像カルーセル効果の詳細な説明

>>:  Apache Log4j2 が核レベルの脆弱性と迅速な修正を報告

推薦する

MySQL データベースのインストールと Navicat for MySQL の使用に関するチュートリアル

MySQL は、スウェーデンの会社 MySQL AB によって開発され、現在は Oracle が所有...

MySql のインデックス、ロック、トランザクションの知識ポイントのまとめ

この記事では、MySql のインデックス、ロック、トランザクションに関する知識のポイントをまとめてい...

docker compose helloworld を使い始めるための詳細なプロセス

前提条件Compose は、Docker コンテナをオーケストレーションするためのツールです。Doc...

Linux での MongoDB のインストールと設定のチュートリアル

MongoDBインストールYumを使用してインストールすることを選択する1. repoファイルを作成...

IE8でラベルの背景画像が表示されない問題の解決方法

今日、ちょっとした問題に遭遇し、長い間苦労しました。そのことを皆さんにシェアしたいと思います。 a ...

CSSを使用してダークモードとブライトモードを切り替える

Web Skills第5号では、CSSでダークモードやハイライトモードを実装するための技術的なソリュ...

Linux (Centos7) での redis5 クラスターの構築と使用方法の詳細な説明

目次1. 簡単な説明2. クラスターを作成する手順2.1. ディレクトリを作成する2.2. ソースコ...

JavaScript の Set データ構造の詳細な説明

目次1. セットとは何か2. セットコンストラクタ2.1) 配列2.2) 文字列2.3) 議論2.4...

MySQL でグループ化した後、各グループの最大値を取得する詳細な例

MySQL でグループ化した後、各グループの最大値を取得する詳細な例1. テストデータベーステーブル...

Webpack ファイル パッケージ化エラー例外

webpack をパッケージ化する前に、次の作業が完了していることを確認する必要があります。 1) ...

Dockerコンテナのホスト間マルチネットワークセグメント通信ソリューションの詳細説明

1. マックヴラン前回のブログ投稿で紹介した Docker コンテナのホスト間通信を実現するための ...

JSONデータをHTMLで表示する方法

背景:場合によっては、json データをページに直接表示する必要があります (たとえば、インターフェ...

MySQL Truncate の使用方法の詳細な説明

目次MySQL 切り捨ての使用1. 構文を切り捨てる2. Truncateの使用上の注意3. TRU...

友達やグループを見つけるためのJavaScriptのLayim

現在、layuiの関係者はlayim友達検索ページの構造とスタイルを提供していません。私は個人的に非...

CSS と JS を使用して下線効果を実装する方法の例

この記事では、主に 2 種類の下線の動的効果について説明します。1 つ目は、ホバーすると X 軸が内...