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 が核レベルの脆弱性と迅速な修正を報告

推薦する

JSscriptタグの属性は何ですか

JS スクリプト タグの属性は何ですか? charset : オプション。 src 属性で指定された...

アップロード画像コントロールを実現するネイティブ js

この記事の例では、アップロード画像コントロールを実装するためのjsの具体的なコードを参考までに共有し...

純粋な CSS を使用して脈動するローダー効果のソースコードを作成する

効果プレビュー右側の「クリックしてプレビュー」ボタンを押すと現在のページでプレビューが表示され、リン...

ウェブデザインの仕事に応募する方法

<br />みなさんこんにちは!ここで皆さんとチャットできて光栄です! (*^__^*)...

Vueダイナミックフォームの詳細な応用

概要バックグラウンド管理システムには多くのフォーム要件があります。データをjson 形式で書き込み、...

element.style インライン スタイルを変更する方法のチュートリアル

序文上記の Web ページ スタイルを記述しているときに、スタイルの値をどのように変更しても、ページ...

MySQL の count 関数の正しい使い方の詳細な説明

1. 説明MySQLでは、テーブル内の行の総数を取得する必要がある場合、通常は次の文を使用します。 ...

ffmpeg コマンドラインを使用してビデオを変換するためのサンプルコード

この記事の本文を始める前に、まず ffmpeg プログラムをインストールする必要があります (Lin...

中国における中国語ドメイン名の人気は新たなクライマックスを迎えた

<br />外交部などの中央政府機関、各レベルの地方政府、その他の国家機関や部門が率先し...

Vue コンポーネント値転送中のデータ損失の分析と解決

序文前回の記事では、JavaScript の 2 つのデータ型、基本型と参照型、および参照型の浅いコ...

Javascriptの基本ループの詳しい説明

目次サイクルのために入室のためのその間しながら行うループから抜け出す要約するサイクルのためにループは...

VirtualBox Centos7 の NAT+ホストオンリーネットワークの落とし穴のまとめ

目次1. 問題の背景2. 仮想マシン ネットワーク カードの接続方法は何ですか? 2.1 NAT 2...

CSSボックスモデルの紹介を読めば、混乱することはなくなるでしょう

Web デザインでよく耳にするプロパティ名: content、padding、border、marg...

MySQLのunion allとunionの違いを簡単に理解する

Union は、重複行を除外し、デフォルトのソートを実行する、データに対する結合操作です。Union...

jsvc を使用して tomcat を起動する方法 (通常のユーザーとして実行)

jsvc の紹介実稼働環境では、Tomcat はデーモン モードで実行する必要があります。Tomc...