CSS 完全な視差スクロール効果

CSS 完全な視差スクロール効果

1. 何ですか

視差スクロールとは、複数の背景レイヤーを異なる速度で動かすことで、3次元のモーション効果を生み出し、優れた視覚体験をもたらすことを指します。

ウェブページは、背景レイヤー、コンテンツレイヤー、フローティングレイヤーに分けられます。

マウスホイールをスクロールすると、各レイヤーが異なる速度で移動し、視覚的な違いの効果を生み出します。

2. 実装

CSS を使用してパララックス スクロール効果を実現する方法はいくつかあります。

  • 背景添付
  • 変換:3D を変換

背景添付

この機能は、背景画像を固定するか、ページの残りの部分と一緒にスクロールするかを設定するものです。

値は次のとおりです。

  • scroll: デフォルト値。背景画像はページの残りの部分がスクロールするにつれて移動します。
  • 修正: ページの残りの部分がスクロールしても背景画像が動かない
  • 継承: 親要素のbackground-attachment属性の値を継承します

スクロール パララックスを実現するには、背景がビューポートに対して固定されるように、background-attachment プロパティを fixed に設定する必要があります。要素にスクロール機構があっても、背景は要素の内容に合わせてスクロールしません。

つまり、背景は初期位置に固定されます。

コア CSS コードは次のとおりです。

セクション {
    高さ:100vh;
}

.g-img {
    背景画像: url(...);
    背景添付: 固定;
    背景サイズ: カバー;
    背景の位置: 中央 中央;
}

全体的な例は次のとおりです。

<スタイル>
div {
            高さ:100vh;
            背景: rgba(0, 0, 0, .7);
            色: #fff;
            行の高さ: 100vh;
            テキスト配置: 中央;
            フォントサイズ: 20vh;
        }

        .a-img1 {
            背景画像: url(https://images.pexels.com/photos/1097491/pexels-photo-1097491.jpeg);
            背景添付: 固定;
            背景サイズ: カバー;
            背景の位置: 中央 中央;
        }

        .a-img2 {
            背景画像: url(https://images.pexels.com/photos/2437299/pexels-photo-2437299.jpeg);
            背景添付: 固定;
            背景サイズ: カバー;
            背景の位置: 中央 中央;
        }

        .a-img3 {
            背景画像: url(https://images.pexels.com/photos/1005417/pexels-photo-1005417.jpeg);
            背景添付: 固定;
            背景サイズ: カバー;
            背景の位置: 中央 中央;
        }
</スタイル>
 <div class="a-text">1</div>
    <div class="a-img1">2</div>
    <div class="a-text">3</div>
    <div class="a-img2">4</div>
    <div class="a-text">5</div>
    <div class="a-img3">6</div>
    <div class="a-text">7</div>

変換:3D を変換

同様に、まずは transform と perspective という 2 つの概念を見てみましょう。

  • transform: 平行移動、回転、拡大縮小など、要素 (2D/3D) を変換できる CSS3 属性。
  • perspective: CSS3属性。要素が3D変換を伴う場合、perspectiveは私たちの目に見える3D立体効果、つまり空間感覚を定義することができます。

3Dパース図は以下のようになります。

例えば:

<スタイル>
    html{
        オーバーフロー: 非表示;
        高さ: 100%
    }

    体 {
        /* 視差要素の親には 3D パースペクティブが必要です */
        パースペクティブ: 1px;
        変換スタイル: 3D を保持します。
         高さ: 100%;
        overflow-y: スクロール;
        オーバーフロー-x:非表示;
    }
    #アプリ{
        幅:100vw;
        高さ:200vh;
        背景:スカイブルー;
        パディング上部:100px;
    }
    。1つ{
        幅:500ピクセル;
        高さ:200px;
        背景:#409eff;
        変換: translateZ(0px);
        下部マージン: 50px;
    }
    。二{
        幅:500ピクセル;
        高さ:200px;
        背景:#67c23a;
        変換: translateZ(-1px);
        下部マージン: 150px;
    }
    。三つ{
        幅:500ピクセル;
        高さ:200px;
        背景:#e6a23c;
        変換: translateZ(-2px);
        下部マージン: 150px;
    }
</スタイル>
<div id="アプリ">
    <div class="one">1</div>
    <div class="two">2</div>
    <div class="three">3</div>
</div>

この方法で視覚的な違いを実現する原理は次のとおりです。

  • コンテナーが transform-style: preserve-3d および perspective: xpx に設定されている場合、このコンテナー内の子要素は 3D 空間に配置されます。
  • サブ要素は異なる transform: translateZ() を設定します。このとき、3D Z 軸方向における異なる要素と画面 (私たちの目) の間の距離は異なります。
  • スクロール バーをスクロールする場合、子要素の transform: translateZ() が異なるため、画面 (人間の目) に対するスクロール translateY の上下の距離も異なり、スクロール パララックスの効果が得られます。

上記は、CSS を使用してパララックス スクロール効果を実現する方法の詳細です。CSS パララックス スクロール効果の詳細については、123WORDPRESS.COM の他の関連記事をご覧ください。

<<:  HTMLはa要素hrefのURLリンクを自動的に更新したり新しいウィンドウを開いたりする機能を実装する

>>: 

推薦する

MySQLのクラスタ化インデックスと非クラスタ化インデックスの詳細な説明

1. クラスター化インデックステーブル データはインデックスの順序で保存されます。つまり、インデック...

Vue v-onディレクティブの使用について

目次1. イベントのリスニング2. イベントパラメータを渡す3. イベント修飾子ケース1: クリック...

CentOS7 環境で gcc (バージョン 10.2.0) をアップグレードする詳細な手順

目次簡単な紹介1. 現在のgccバージョンを確認する2. gccインストールパッケージ(バージョン1...

1 時間で MySQL データベースを学ぶ (Zhang Guo)

目次1. データベースの概要1.1 開発の歴史2. MySQL の紹介2.1. MySQLの概要2....

キャンバスをベースにした超クールな水光効果を実現

この記事の例では、キャンバスをベースにした超クールな水の光の効果を実装するための具体的なコードを参考...

...

Windows 8.1 で MySQL5.7 のルート パスワードを忘れた場合の解決方法

【背景】最近勉強中に非常に恥ずかしいことに遭遇しました。MySQL のパスワードを忘れてしまい、My...

Docker イメージの最適化 (1.16GB から 22.4MB)

目次最適化の第一歩: 軽量ベースイメージの使用第2段階の最適化:多段階構築Docker は、ソフトウ...

Tomcat プロジェクトを展開する一般的な方法のいくつか [テスト済み]

1 / Webプロジェクトファイルをwebappsディレクトリに直接コピーするこれは最も一般的に使...

MySQL ユーザー権限管理の実装

1. MySQL の権限の概要MySQL には、権限を制御する 4 つのテーブルがあります。user...

Linux システムコマンドのメモ

この記事では、Linux システム コマンドについて説明します。ご参考までに、詳細は以下の通りです。...

Word のコンテンツを Web サイトのエディターに直接コピーすることはお勧めしません。

<br />質問: Word のコンテンツを Web サイトのエディターに直接コピーする...

プロジェクトを素早く構築するためのvite+vue3.0+ts+element-plusの実装

目次バイト機能使用環境プロジェクトを構築する構成vite.config.ts tsconfig.js...

CSS でショートカット プロパティを記述する際は、トラブルの順序に注意してください (落とし穴を避けるため)

ショートハンドプロパティは、複数のプロパティに同時に値を割り当てるために使用されます。たとえば、fo...