ホームページ ウェブフロントエンド CSSチュートリアル フロントエンドのパフォーマンスの最適化: ページの再描画とリフローを減らす方法

フロントエンドのパフォーマンスの最適化: ページの再描画とリフローを減らす方法

Jan 26, 2024 am 11:15 AM
フロントエンドのパフォーマンスの最適化 ページの再描画 リショアリングの削減

フロントエンドのパフォーマンスの最適化: ページの再描画とリフローを減らす方法

フロントエンド パフォーマンス チューニング スキル: ページの再描画とリフローを減らす方法

Web 開発では、フロントエンド パフォーマンスの最適化が重要なトピックです。ユーザーが Web ページにアクセスしたとき、ページの応答速度はユーザー エクスペリエンスに直接影響します。重要な側面の 1 つはページの読み込み速度です。ページの読み込み速度に最も影響を与える要因は、再描画とリフローです。

ページの再描画は、新しいスタイルに従ってページの視覚的な部分を更新することを指しますが、リフローは、Web ページのレイアウトを再計算するプロセスを指します。再描画とリフローは相互に依存しており、ページの要素が再描画されると、多くの場合、周囲の要素がリフローされます。

再描画とリフローを頻繁に行うとページの読み込みが遅くなります。そのため、再描画とリフローの頻度を減らすためにいくつかのテクニックを講じる必要があります。

1. テーブル レイアウトの使用を避ける: テーブル レイアウトでは、レイアウトを計算するときにブラウザがテーブル内の各セルのスタイルを考慮する必要があるため、テーブル内の要素が変更されると、全体のリフローするテーブルです。

2. JavaScript アニメーションの代わりに CSS3 アニメーションを使用する: 最新のブラウザーでは、CSS3 はトランジションやトランスフォームなどのいくつかのアニメーション効果を提供しますが、これらはハードウェア レベルで実装されるため、JavaScript を使用して実装されるアニメーション効果よりも効率的です。 . レンダリングする。

3. hidden 属性の合理的な使用: 表示する必要のない一部の要素のスタイルを display:none または Visibility:hidden に設定すると、これらの要素の再描画やリフローを回避できます。

4. スタイルの頻繁な変更を避ける: 要素のスタイルを変更する必要がある場合、コード内のさまざまな場所に変更を分散させるのではなく、変更を集中的に行うことが最善です。ブラウザーは複数のスタイルの変更をマージするため、再描画とリフローの回数が減ります。

5. ドキュメント フラグメントを使用してノードの操作を減らす: 多数のノードをページに挿入する場合は、ドキュメント フラグメントを使用して操作し、それらを一度にページに挿入するのが最善です。これにより、複数回のリフローが回避されます。

具体的なコード例をいくつか示します:

  1. テーブル レイアウトの使用を避ける:

    <table>
      <tr>
     <td>Cell 1</td>
     <td>Cell 2</td>
      </tr>
    </table>
    ログイン後にコピー

    次のように変更します:

    <div class="row">
      <div class="cell">Cell 1</div>
      <div class="cell">Cell 2</div>
    </div>
    ログイン後にコピー
  2. JavaScript アニメーションの代わりに CSS3 アニメーションを使用します:

    // JavaScript动画
    function animate(element, target) {
      let position = 0;
      setInterval(() => {
     position += 1;
     element.style.left = position + 'px';
      }, 10);
    }
    
    // CSS3动画
    .element {
      transition: left 1s;
    }
    ログイン後にコピー
  3. 非表示属性の合理的な使用:

    .hidden-element {
      display: none;
      /* 或者 */
      visibility: hidden;
    }
    ログイン後にコピー
  4. スタイルの頻繁な変更を避けます:

    // 不推荐的做法
    element.style.marginTop = '10px';
    element.style.marginBottom = '20px';
    element.style.marginLeft = '30px';
    element.style.marginRight = '40px';
    
    // 推荐的做法
    element.style.margin = '10px 20px 30px 40px';
    ログイン後にコピー
  5. ドキュメント フラグメントを使用してノード操作を削減します:

    // 不使用文档片段
    for (let i = 0; i < 1000; i++) {
      let element = document.createElement('div');
      document.body.appendChild(element);
    }
    
    // 使用文档片段
    let fragment = document.createDocumentFragment();
    for (let i = 0; i < 1000; i++) {
      let element = document.createElement('div');
      fragment.appendChild(element);
    }
    document.body.appendChild(fragment);
    ログイン後にコピー

概要:
テーブル レイアウトの使用を避け、代わりに CSS3 アニメーションを使用します。非表示属性を使用し、頻繁なスタイル変更を回避し、ドキュメント フラグメントを使用してノード操作を減らすことにより、ページの再描画とリフローを減らすことができ、それによってページの読み込み速度が向上し、ユーザー エクスペリエンスが向上します。実際の作業では、Web ページをより効率的かつエレガントにするために、特定の状況に応じてこれらのテクニックを合理的に使用する必要があります。

以上がフロントエンドのパフォーマンスの最適化: ページの再描画とリフローを減らす方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

スクリーンリーダーの分解:アクセス可能なフォームとベストプラクティス スクリーンリーダーの分解:アクセス可能なフォームとベストプラクティス Mar 08, 2025 am 09:45 AM

これは、フォームアクセシビリティについて行った小さなシリーズの3番目の投稿です。 2番目の投稿を逃した場合は、「ユーザーフォーカスの管理:Focus-Visible」をご覧ください。で

WordPressブロックと要素にボックスシャドウを追加します WordPressブロックと要素にボックスシャドウを追加します Mar 09, 2025 pm 12:53 PM

CSS Box-Shadowおよびアウトラインプロパティは、WordPress 6.1でTheme.jsonサポートを獲得しました。実際のテーマでどのように機能するか、そしてこれらのスタイルをWordPressブロックと要素に適用するために必要なオプションのいくつかの例を見てみましょう。

最初のカスタムSvelteトランジションを作成します 最初のカスタムSvelteトランジションを作成します Mar 15, 2025 am 11:08 AM

Svelte Transition APIは、コンポーネントがカスタムSVELTE遷移を含むドキュメントを入力または離れるときにアニメーション化する方法を提供します。

GraphQLキャッシングの使用 GraphQLキャッシングの使用 Mar 19, 2025 am 09:36 AM

最近GraphQLの作業を開始した場合、またはその長所と短所をレビューした場合、「GraphQLがキャッシュをサポートしていない」または

上品でクールなカスタムCSSスクロールバー:ショーケース 上品でクールなカスタムCSSスクロールバー:ショーケース Mar 10, 2025 am 11:37 AM

この記事では、Scrollbarsの世界に飛び込みます。私は知っています、それはあまりにも魅力的ではありませんが、私を信じてください、よく設計されたページは手をつないで行きます

ショー、Don&#039; t Tell ショー、Don&#039; t Tell Mar 16, 2025 am 11:49 AM

あなたのウェブサイトのコンテンツプレゼンテーションの設計にどれくらいの時間に費やしますか?新しいブログ投稿を書いたり、新しいページを作成したりするとき、あなたは考えていますか

Redwood.jsと動物相を使用してイーサリアムアプリを構築します Redwood.jsと動物相を使用してイーサリアムアプリを構築します Mar 28, 2025 am 09:18 AM

最近のビットコインの価格が20k $ $ USDを超えており、最近30Kを破ったので、イーサリアムを作成するために深く掘り下げる価値があると思いました

NPMコマンドは何ですか? NPMコマンドは何ですか? Mar 15, 2025 am 11:36 AM

NPMコマンドは、サーバーの開始やコンパイルコードなどの1回限りのプロセスまたは継続的に実行されるプロセスとして、さまざまなタスクを実行します。

See all articles