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 データベースにおける単一テーブル クエリと複数テーブル結合クエリの効率の比較

この間、プロジェクトに取り組んでいるときに、データ間の接続が非常に複雑なモジュールに遭遇しました。テ...

モバイルデバイスにおける適応レイアウトの問題に関する簡単な説明 (レスポンシブ、rem/em、Js ダイナミクス)

3G の普及により、携帯電話を使ってインターネットにアクセスする人が増えています。モバイル デバイ...

Windows 7 で MySQL 8.0.16 をインストールして使用する場合、パスワードの変更と Navicat への接続に関する問題が発生する

MySQL のインストール時にいくつかの問題が発生しました。オンラインで見つけた回答は似たようなもの...

IE、Firefox、Chromeブラウザではスペースの表示が異なります

&nbsp;&nbsp;IE、Firefox、Chrome ブラウザでの表示効果は、...

CSS3 を使用して左上または右上隅にリマインダー ドットを表示するサンプル コード

効果画像(三角形をご希望の場合は、ここをクリックしてください): コード: <html>...

JSはjQueryのappend関数を実装します

目次コードを見せてください効果をテストする効果追伸別のアプローチコードを見せてください HTMLEl...

データベースの水平セグメンテーションを実装するための2つのアイデア

導入インターネット アプリケーションの普及に伴い、膨大なデータの保存とアクセスがシステム設計における...

ユーザーエクスペリエンスの概要

最近では、ソフトウェアやウェブサイトのいずれの作業であっても、設計時に「ユーザー エクスペリエンス」...

Node.js コード実行をバイパスするためのヒントのまとめ

目次1. 子プロセス2. nodejsでのコマンド実行2.1 16進数エンコード2.2 ユニコードエ...

MySQL 8.0.12 のインストールと設定のグラフィックチュートリアル

MySQL 8.0.12 のダウンロードとインストールのチュートリアルを録画し、全員と共有しました。...

ウェブページ読み込み時に左右にジャンプする原因の分析と解決

最近、ウェブサイトを設計するときにこの問題に遭遇しています。メンバーセンターを設計し、コンテンツを ...

ウェブページ内のFlash SWFファイルを変更する方法

これは多くの人が遭遇した問題だと思います。実際、Web ページから FLASH をダウンロードして修...

Nginx で Brotli 圧縮アルゴリズムを有効にする方法の例

Brotli は、Zopfli よりも 20 ~ 26% 高い圧縮率を実現できる新しいデータ形式です...

親コンテナの CSS 均等分割 (完全三分の一) の実装

親コンテナの幅は固定されています。子要素が親の幅を均等に分割するには、どのような方法がありますか?コ...

MySQL のソートとページング (order by と limit) と既存の落とし穴

並べ替えクエリ (order by)電子商取引の場合: 今日完了したすべての注文を表示し、取引金額に...