国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ ウェブフロントエンド htmlチュートリアル すべてのフロントエンド開(kāi)発者がページ レンダリングを理解する必要があるのはなぜでしょうか? _html/css_WEB-ITnose

すべてのフロントエンド開(kāi)発者がページ レンダリングを理解する必要があるのはなぜでしょうか? _html/css_WEB-ITnose

Jun 24, 2016 am 11:51 AM

ページ レイアウトを定義するとき、最初からレンダリングを最適化する必要があります。スタイルとスクリプトはページ レンダリングにおいて非常に重要な役割を果たします。専門(mén)家は、パフォーマンスの問(wèn)題を回避するためのいくつかのコツを知っています。

この記事では、ブラウザーの技術(shù)的な詳細(xì)については掘り下げず、いくつかの一般原則を説明します。ブラウザエンジンが異なれば動(dòng)作も異なるため、特定のブラウザの學(xué)習(xí)がより複雑になります。

ブラウザはどのようにページをレンダリングしますか?

ブラウザがページをレンダリングする一般的なプロセスから始めましょう:

  • DOM (ドキュメント オブジェクト モデル) は、サーバーから受信した HTML から形成されます。
  • スタイルはロードされ、解析されて CSSOM (CSS Object Model) を形成します。
  • DOM と CSSOM に従って、レンダリング ツリーが作成されます。このレンダリング ツリーはレンダリングされたオブジェクトのコレクションです (Webkit ではそれぞれ「レンダラー」と「レンダー オブジェクト」と呼ばれますが、Gecko エンジンでは「フレーム」と呼ばれます)。非表示の要素 (head タグや、display:none 屬性を持つ一部の要素など) を除いて、レンダー ツリーは DOM の構(gòu)造をマップします。レンダリング ツリーでは、各テキスト文字列は獨(dú)立したレンダラとして扱われます。各レンダー オブジェクトには、計(jì)算されたスタイルを持つ対応する DOM オブジェクト (またはテキスト ブロック) が含まれています。言い換えれば、レンダー ツリーは DOM の視覚的表現(xiàn)を記述します。
  • レンダリング要素ごとに、その座標(biāo)が計(jì)算されます。これを「レイアウト」と呼びます。ブラウザは、一度だけ処理する必要がある「フロー メソッド」を使用してすべての要素をレイアウトします (テーブルは複數(shù)回処理する必要があります)。
  • 最後に、ブラウザウィンドウにレイアウトが表示されます。このプロセスを「ペイント」と呼びます。
  • 再描畫(huà)

    位置の変更を必要としないいくつかのスタイル(背景色、境界線の色、可視性など)がページ上で変更された場(chǎng)合、ブラウザは要素に新しいスタイルを再描畫(huà)するだけです(これは「再描畫(huà)」または「スタイルの再定義」)。

    リフロー

    リフロー (または「再レイアウト」) は、ページ上の変更がドキュメント內(nèi)の要素のコンテンツ、構(gòu)造、または位置に影響を與えるときに発生します。再配置は通常、次の変更によってトリガーされます:

  • DOM 操作 (要素の追加、削除、変更、要素の順序の変更など)。
  • フォーム內(nèi)のテキストの変更を含むコンテンツの変更。
  • CSS プロパティを計(jì)算または変更します。
  • スタイルシートを追加または削除します。
  • 「クラス」屬性を変更します。
  • ブラウザウィンドウの操作(サイズ変更、ウィンドウのスクロール)。
  • 疑似クラス (ホバー狀態(tài)など) をアクティブ化します。
  • ブラウザはどのようにレンダリングを最適化しますか?

    ブラウザは、リフロー プロセスを変更された要素の領(lǐng)域のみに制限するよう最善を盡くします。たとえば、絶対位置または固定位置を持つ要素のサイズを変更すると、それ自體とその子孫にのみ影響しますが、位置が靜的である要素に同じことを行うと、その背後にあるすべての要素が再配置されます。

    もう 1 つの最適化は、Jjavascript コードの一部を?qū)g行するときに、ブラウザーがいくつかの変更をキャッシュし、コードの実行時(shí)にこれらの変更を一度に実行することです。たとえば、次のコードは再描畫(huà)とリフローをトリガーします。

    1. var $body = $('body');
    2. $body.css('padding', '1px'); // リフローredraw
    3. $body.css('color', 'red'); // リフロー
    4. $body.css('margin', '2px'); // リフロー、再描畫(huà)
    5. // 実際にはリフローは 1 つだけです再描畫(huà)が実行されます。

    上で述べたように、要素の屬性にアクセスすると、強(qiáng)制的に再配置が行われます。上記のコードに要素の屬性を読み取るコード行を追加すると、次の狀況が発生します:

    1. var $body = $('body');
    2. $body.css('padding', '1px');
    3. $body.css('padding'); // 要素の屬性はここで一度読み取られ、強(qiáng)制的に再配置されます。
    4. $body.css('color', 'red');
    5. $body.css('margin', '2px');

    上記のコードの結(jié)果は、 2 つが再配置されました 回。したがって、パフォーマンスを向上させるには、要素の屬性をまとめて読み取るコードを整理する必要があります (詳細(xì)な例については、JSBin のコードを參照してください)。

    強(qiáng)制再注文 をトリガーする必要がある狀況があります。たとえば、同じ屬性を要素に 2 回変更し (margin-left など)、最初はアニメーションなしで 100px に設(shè)定し、次にアニメーションを通じて値を 50px に変更します。 もちろん、詳細(xì)については例を參照してください。

    トランジションを含む CSS クラスから始めます:

    has-transition 1S Ease-OUT

    Transition: Margin-Left 1s Ease-OUT; targetElem = $('#targetElemId');

    1. //transition を含むクラスを削除します
    2. $targetElem.removeClass('has -transition');
    3. //transition を含むクラスがなくなった場(chǎng)合、要素の屬性を変更します
    4. $targetElem.css('margin-left', 100);
    // 次にクラスを追加します戻る遷移を含む
    $targetElem.addClass('has-transition');

    1. //要素の屬性を変更する
    2. $targetElem.css('margin-left', 50);
    3. 上記の実裝期待どおりに機(jī)能しません。すべての変更はブラウザによってキャッシュされ、上記のコードの最後でのみ実行されます。必要なのは強(qiáng)制的な再配置であり、次の変更を行うことで実現(xiàn)できます:
    4. //transition を含むクラスを削除します
    5. $(this).removeClass('has-transition');
    6. //要素の屬性を変更します
    7. $(this).css('margin-left', 100);
    8. //変更されたクラスまたは屬性をすぐに実行できるように、強(qiáng)制的な再配置をトリガーします。
    9. $(this)[0].offsetHeight; // offsetHeight は単なる例であり、他のプロパティも機(jī)能します。
    // トランジションを含むクラスを元に追加します

    $(this).addClass('has-transition');

    1. // 要素の屬性を変更します
    2. $(this).css('margin -left', 50);
    3. これで、このコードは期待どおりに実行されます。
    4. 実際の最適化提案
    5. 役立つ情報(bào)をまとめました。次の點(diǎn)をお?jiǎng)幛幛筏蓼?
    6. 合法的な HTML と CSS を作成し、ファイルエンコーディングを指定することを忘れないでください。スタイルは head タグとスクリプトに記述する必要があります。 tag は body タグの最後をロードする必要があります。
    7. CSS セレクターの簡(jiǎn)素化と最適化を試みてください (この最適化ポイントは、CSS プリプロセッサを使用するほとんどの開(kāi)発者によって無(wú)視されます)。ネストレベルの數(shù)は最小限に抑えてください。 CSS セレクターのパフォーマンス ランキングは次のとおりです (最速から順に):
    8. ID セレクター: #id
    9. クラス セレクター: .class
    10. タグ: div
    11. 隣接する兄弟要素: a + i
    12. 親要素セレクター: ul > ; li
    ワイルドカード セレクター: * 擬似クラスと擬似要素: a:hover、ブラウザーはセレクターを右から左に処理することを覚えておく必要があります。そのため、右端の #id と .class のどちらのセレクターが高速になるでしょうか? 。

    div * {...} // 悪い

    .list li {...} // 悪い
  • .list-item {...} // 良い
  • #list .list- item {...} // 良いです
  • スクリプトでは、DOM 操作をできるだけ減らします。プロパティやオブジェクトを含むすべてのものをキャッシュします (再利用できる場(chǎng)合)。複雑な操作を?qū)g行する場(chǎng)合は、「オフライン」要素を操作して (「オフライン」要素とは、DOM オブジェクトから分離され、メモリ內(nèi)にのみ存在する要素を意味します)、この要素を DOM に挿入するのが最善です。
  • jQuery を使用する場(chǎng)合は、jQuery セレクターのベスト プラクティスに従ってください
  • 要素のスタイルを変更するには、「class」屬性を変更するのが最も効率的な方法の 1 つです。 DOM ツリーの奧深くまで変更を加えるほど、これはより効率的になります (これは、プレゼンテーションをロジックから分離するのにも役立ちます)。
  • できるだけ、位置が絶対または固定である要素のみをアニメーション化します。
  • スクロールするときにいくつかの複雑な :hover アニメーションを無(wú)効にすることをお?jiǎng)幛幛筏蓼?(例: body タグに no-hover クラスを追加する)。このトピックに関する記事があります。
  • このウェブサイトの聲明
    この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

    ホットAIツール

    Undress AI Tool

    Undress AI Tool

    脫衣畫(huà)像を無(wú)料で

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    寫(xiě)真から衣服を削除するオンライン AI ツール。

    Clothoff.io

    Clothoff.io

    AI衣類(lèi)リムーバー

    Video Face Swap

    Video Face Swap

    完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無(wú)料のコードエディター

    SublimeText3 中國(guó)語(yǔ)版

    SublimeText3 中國(guó)語(yǔ)版

    中國(guó)語(yǔ)版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開(kāi)発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

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

    HTMLボタン要素を使用してクリック可能なボタンを?qū)g裝します HTMLボタン要素を使用してクリック可能なボタンを?qū)g裝します Jul 07, 2025 am 02:31 AM

    HTMLボタン要素を使用してクリック可能なボタンを?qū)g現(xiàn)するには、まずその基本的な使用法と一般的な予防策を習(xí)得する必要があります。 1.デフォルトで送信されるタイプ屬性(ボタン、送信、リセットなど)を使用してタグを使用してボタンを作成し、動(dòng)作を定義します。 2. JavaScriptを介してインタラクティブな関數(shù)を追加します。これは、IDを介してインラインまたはバインドイベントリスナーを作成してメンテナンスを改善することができます。 3. CSSを使用して、バックグラウンドカラー、ボーダー、丸いコーナー、ホバー/アクティブステータス効果などのスタイルをカスタマイズして、ユーザーエクスペリエンスを強(qiáng)化します。 4.一般的な問(wèn)題に注意してください:無(wú)効な屬性が有効になっていないことを確認(rèn)し、JSイベントが正しくバインドされ、レイアウトオクルージョンがあり、開(kāi)発者ツールのヘルプを使用して例外をトラブルシューティングします。これをマスターします

    HTMLヘッド要素內(nèi)のドキュメントメタデータの構(gòu)成 HTMLヘッド要素內(nèi)のドキュメントメタデータの構(gòu)成 Jul 09, 2025 am 02:30 AM

    htmlheadのメタデータは、SEO、ソーシャル共有、ブラウザの動(dòng)作にとって重要です。 1.ページのタイトルと説明を設(shè)定し、使用して簡(jiǎn)潔で一意に保ちます。 2.オープングラフとツイッターのカード情報(bào)を追加してソーシャル共有効果を最適化し、畫(huà)像サイズに注意を払い、デバッグツールを使用してテストします。 3.文字セットとビューポート設(shè)定を定義して、多言語(yǔ)サポートがモバイル端末に適合していることを確認(rèn)します。 4.著者の著作権、ロボット制御、および標(biāo)準(zhǔn)的な防止コンテンツなどのオプションのタグも合理的に構(gòu)成する必要があります。

    2025年の初心者向けの最高のHTMLチュートリアル 2025年の初心者向けの最高のHTMLチュートリアル Jul 08, 2025 am 12:25 AM

    tolearnhtmlin2025、chooseatutorialthatiatutorialthatishands-onpracticewithmodernstandardescssandjavascriptbasics.1.priolitizeds-onlealningswith-by-stepprojectslike by by-dikebuildinging ofersalpersalblement.2.enturetcocrovernhternhtermovernedernhtermoternedernedの

    メールテンプレートチュートリアル用のHTML メールテンプレートチュートリアル用のHTML Jul 10, 2025 pm 02:01 PM

    互換性の高いHTMLメールテンプレートを作成する方法は?まず、Div Flexまたはグリッドレイアウトの使用を避けるために、テーブルで構(gòu)造を構(gòu)築する必要があります。第二に、すべてのスタイルにインラインドする必要があり、外部CSSに依存することはできません。次に、畫(huà)像をAlt説明で追加し、パブリックURLを使用する必要があります。ボタンは、背景色のテーブルまたはTDでシミュレートする必要があります。最後に、複數(shù)のクライアントの詳細(xì)をテストして調(diào)整する必要があります。

    HTMLフィギュアとFigcaption要素を使用して、キャプションを畫(huà)像やメディアに関連付ける方法は? HTMLフィギュアとFigcaption要素を使用して、キャプションを畫(huà)像やメディアに関連付ける方法は? Jul 07, 2025 am 02:30 AM

    HTML合計(jì)を使用すると、直感的でセマンティックな明確さが可能になり、畫(huà)像またはメディアにキャプションテキストを追加できます。 1。寫(xiě)真、ビデオ、コードブロックなどの獨(dú)立したメディアコンテンツをラップするために使用されます。 2。説明テキストとして配置され、メディアの上または下に配置できます。 3.ページ構(gòu)造の明確さを改善するだけでなく、アクセシビリティとSEO効果も向上します。 4.それを使用する場(chǎng)合、虐待を避けるために注意を払い、通常の裝飾的な寫(xiě)真ではなく、説明を強(qiáng)調(diào)し、伴う必要があるコンテンツに適用する必要があります。 5.無(wú)視できないalt屬性。これはfigcaptionとは異なります。 6.フィマは柔軟で、必要に応じて図の上または下部に配置できます。これらの2つのタグを正しく使用すると、セマンティックで理解しやすいWebコンテンツの構(gòu)築に役立ちます。

    サーバーなしでHTMLでフォームの送信を処理する方法は? サーバーなしでHTMLでフォームの送信を処理する方法は? Jul 09, 2025 am 01:14 AM

    バックエンドサーバーがない場(chǎng)合、HTMLフォームの送信は、フロントエンドテクノロジーまたはサードパーティサービスを通じて処理できます。特定の方法には次のものが含まれます。1。javaScriptを使用してフォーム送信を傍受して、入力検証とユーザーフィードバックを達(dá)成しますが、データは持続しません。 2. Formspreeなどのサードパーティサーバーレスフォームサービスを使用してデータを収集し、電子メール通知とリダイレクト機(jī)能を提供します。 3. LocalStorageを使用して、ユーザーの好みを保存したり、単一ページのアプリケーションステータスの管理に適した一時(shí)的なクライアントデータを保存しますが、機(jī)密情報(bào)の長(zhǎng)期的なストレージには適していません。

    HTMLで最も一般的に使用されるグローバル屬性は何ですか? HTMLで最も一般的に使用されるグローバル屬性は何ですか? Jul 10, 2025 am 10:58 AM

    クラス、ID、スタイル、データ、およびタイトルは、HTMLで最も一般的に使用されるグローバル屬性です。クラスは、スタイル設(shè)定とJavaScript操作を容易にするために、1つ以上のクラス名を指定するために使用されます。 IDは、アンカージャンプとJavaScriptコントロールに適した要素の一意の識(shí)別子を提供します。スタイルを使用すると、インラインスタイルを追加できます。一時(shí)的なデバッグに適していますが、大規(guī)模な使用にはお?jiǎng)幛幛筏蓼护?。データプロパティは、フロントエンドとバックエンドの相互作用に便利なカスタムデータの保存に使用されます。タイトルはマウスオーバープロンプトを追加するために使用されますが、そのスタイルと動(dòng)作はブラウザによって制限されます。これらの屬性の合理的な選択は、開(kāi)発効率とユーザーエクスペリエンスを改善できます。

    HTMLの畫(huà)像のネイティブレイジーロードを?qū)g裝します HTMLの畫(huà)像のネイティブレイジーロードを?qū)g裝します Jul 12, 2025 am 12:48 AM

    ネイティブLazyロードは、タグにロード= "lazy"屬性を追加することにより、寫(xiě)真の怠zyなロードを可能にする組み込みブラウザー機(jī)能です。 1. JavaScriptまたはサードパーティライブラリを必要とせず、HTMLで直接使用されます。 2。ページの下の最初の畫(huà)面に表示されない寫(xiě)真、畫(huà)像ギャラリーはアドオンをスクロールし、大規(guī)模な寫(xiě)真リソースに適しています。 3.最初の畫(huà)面またはディスプレイを備えた寫(xiě)真には適していません。 4。それを使用する場(chǎng)合、レイアウトジッターを避けるために適切なプレースホルダーを設(shè)定する必要があります。 5。SRCSETおよびサイズの屬性と組み合わせて、レスポンシブな畫(huà)像の読み込みを最適化する必要があります。 6。互換性の問(wèn)題を考慮する必要があります。一部の古いブラウザはそれをサポートしていません。これらは、機(jī)能検出を通じて使用し、JavaScriptソリューションと組み合わせることができます。

    See all articles