HTML+CSSは、要素の位置までスクロールして読み込みアニメーション効果を表示します。

HTML+CSSは、要素の位置までスクロールして読み込みアニメーション効果を表示します。

要素までスクロールするたびに読み込みアニメーションを追加するにはどうすればよいですか?

初期パラメータを追加する要素

上の画像のアニメーションを例に、左右のコンテナを 2 つ追加し、コンテナ内にコンテンツを配置します。

デフォルトの透明度が 0、左右に 100 ピクセル移動する初期データを追加します。

//左コンテナ.item-leftContainer {
    不透明度: 0;
    変換: translateX(-100px);
  }
  //右コンテナ.item-rightContainer {
    不透明度: 0;
    変換: translateX(100px);
  }

アニメーションデータの追加

less でアニメーションデータを追加します。ここでは から のみ設定します。手順 1 の初期パラメータ設定を省略し、アニメーション内で から を設定することもできます。

実行後、透明度が 0 から 1 に変わり、2 つのコンテナーが中央に 100 ピクセル移動して元の位置に戻ります。

//アニメーション @keyframes showLeft {
    に {
      不透明度: 1;
      変換: translateX(0px);
    }
  }
  @keyframes 右を表示 {
    に {
      不透明度: 1;
      変換: translateX(0px);
    }
  }
  @keyframes 左を非表示 {
    に {
      不透明度: 0;
      変換: translateX(-100px);
    }
  }
  @keyframes を右に非表示 {
    に {
      不透明度: 0;
      変換: translateX(100px);
    }
  }

アニメーションのトリガー

ページの読み込み/更新トリガー - componentDidMount で実行

ページがスクロールするとトリガーされます - componentDidMount と componentWillUnmount にページスクロール イベントのリスナー/ログアウトを追加します

現在のスクロールの高さと要素の位置の差を確認します。

window.pageYOffset (スクロール距離) + windowHeight (ウィンドウの高さ) > leftElement.offsetTop (要素の相対位置) + parentOffsetTop (親要素の相対位置) + 200

  • 実際のスクロール視覚位置 - window.pageYOffset (スクロール距離) + windowHeight (ウィンドウの高さ)
  • 親コンテナーは絶対配置を使用するため、ここでは上からの要素の高さ (leftElement.offsetTop + parentOffsetTop) が使用されます。通常のレイアウトの場合は、要素の現在の位置 leftElement.offsetTop を使用します。
  • 視覚的な体験を最適化するために、高さ 200 が追加されました。高さが200を超えるとアニメーションが起動します

ページが下までスクロールすると、表示アニメーションがトリガーされ、ページが再び上までスクロールすると、非表示アニメーションがトリガーされます。

コンポーネントマウント() {
        this.checkScrollHeightAndLoadAnimation();
        window.addEventListener('スクロール'、this.bindHandleScroll);
    }
    コンポーネントのマウントを解除します(){
        window.removeEventListener('scroll', this.bindHandleScroll);
    }
    bindHandleScroll = (イベント) => {
        this.checkScrollHeightAndLoadAnimation();
    }
    チェックスクロールの高さと読み込みアニメーション() {
        定数 windowHeight = window.innerHeight;
        parentEelement を document.getElementById("softwareUsingWays-container") として htmlElement に格納します。
        const parentOffsetTop = parentEelement.offsetTop;
        leftElement を (parentEelement.getElementsByClassName("item-leftContainer") として htmlCollectionOf<HTMLElement>)[0] にします。
        if (window.pageYOffset + windowHeight > leftElement.offsetTop + parentOffsetTop + 200) {
            leftElement.style.animation = "showLeft .6s forwards" //アニメーションを追加} else {
            leftElement.style.animation = "hideLeft 0s forwards" //アニメーションを非表示}
        rightElement を (parentEelement.getElementsByClassName(".item-rightContainer") として HTMLCollectionOf<HTMLElement>)[0] にします。
        if (window.pageYOffset + windowHeight > rightElement.offsetTop + parentOffsetTop + 200) {
            rightElement.style.animation = "showRight .6s forwards" //アニメーションを追加} else {
            rightElement.style.animation = "hideRight 0s forwards" //アニメーションを非表示}
    }

html+cssを使用して要素の位置までスクロールし、読み込みアニメーション効果を表示する方法についての記事はこれで終わりです。関連するhtml読み込みアニメーションコンテンツの詳細については、123WORDPRESS.COMの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も123WORDPRESS.COMを応援してください。

<<:  MySQL ソートの原則とケース分析

>>:  Windows ホストと Docker コンテナに共有フォルダを設定してマウントする手順

推薦する

MySQLキーワードDistinctの詳細な紹介

MySQLキーワードDistinctの使い方の紹介DDL SQLを準備します: テーブルテストを作成...

docker+jenkins+node.js の自動デプロイメント環境をゼロから構築する方法

このケースはCentOS 7システムに基づいていますDockerの使用経験がある人に適していますLi...

Dockerコンテナにvimコマンドがない問題を解決する方法

問題を見つける今日、Docker コンテナ内のファイルを変更しようとしたところ、コンテナ内に vim...

nginx を使用して同じドメイン名で複数の Vue プロジェクトをデプロイし、リバース プロキシを使用する方法

効果現在、プロジェクトは2つ(project1、project2)あり、nginxに付属するinde...

Apache FlinkCEP でタイムアウトステータス監視を実装するための詳細な手順

CEP - 複合イベント処理。ご注文後、一定期間内にお支払いの確認が取れませんでした。タクシーの配...

HTML のキャンバスに基づくスクリーンショットのデモ

冒頭に書いた以前、Renren で JS ベースのスクリーンショット ソリューションについて説明した...

React+TypeScriptプロジェクト構築事例解説

React プロジェクトの構築は非常に簡単ですが、Typescript と組み合わせると、実際にはそ...

js 基本構文と Maven プロジェクト構成チュートリアル ケース

目次1. jsステートメント2番目、js配列3. js関数4. メイヴンV. 結論1. jsステート...

CSS でホバー ドロップダウン メニューを実装する方法

いつものように、今日は非常に実用的な CSS 効果についてお話します。マウスがボタンに移動すると、ド...

Nginx を使用してポート転送 TCP プロキシを実装する例

目次需要背景Nginx を使用する理由は何ですか? Nginx によるポート転送依存関係をインストー...

Docker 環境で JMeter+Grafana+influxdb ビジュアル パフォーマンス監視プラットフォームを構築するチュートリアル

目次1. Dockerをインストールする2. influxDBをインストールして設定する3. Gra...

MySQL シリーズ 14 MySQL 高可用性実装

1. 内閣府マスターノードを監視することで、他のスレーブノードへの自動フェイルオーバーを実現できます...

CentOS で Mysql を再起動するさまざまな方法 (推奨)

1. rpm パッケージ経由でインストールされた MySQL サービスmysqldを再起動 /et...