おそらく誰もが js の実行によって DOM ツリーの解析とレンダリングがブロックされることを知っていると思いますが、CSS の読み込みによって DOM ツリーの解析とレンダリングがブロックされるのでしょうか?次は一緒に分析してみましょう。 原理分析 では、なぜ上記のような現象が起こるのでしょうか?ブラウザのレンダリングプロセスから分析してみましょう。 ブラウザによって使用するカーネルが異なるため、レンダリング プロセスも異なります。現在、2つの主な WebKit レンダリングプロセス Gecko レンダリングプロセス 上記の 2 つのフローチャートから、ブラウザのレンダリング プロセスは次のようになることがわかります。
このプロセスからわかることは
DOMコンテンツが読み込まれました ブラウザの場合、ページの読み込みには主に 2 つのイベントがあります。1 つは DOMContentLoaded で、もう 1 つは onLoad です。 onLoad については特に言うことはありません。ページのすべてのリソースが読み込まれた後にのみトリガーされます。これらのリソースには、CSS、JS、画像、ビデオなどが含まれます。 DOMContentLoaded は、その名前が示すように、ページのコンテンツが解析されるときにトリガーされます。上で説明したように、css は Dom のレンダリングと js の実行をブロックし、js は Dom の解析をブロックします。すると、次のような仮定を立てることができる。
まず最初のケースをテストしてみましょう: <!DOCTYPE html> <html lang="ja"> <ヘッド> <title>CSS ブロッキング</title> <メタ文字セット="UTF-8"> <meta name="viewport" content="width=デバイス幅、初期スケール=1"> <スクリプト> document.addEventListener('DOMContentLoaded', 関数() { console.log('DOMコンテンツが読み込まれました'); })  </スクリプト> <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/css/bootstrap.css" rel="スタイルシート"> </head> <本文> </本文> </html> 実験結果は次のとおりです。アニメーション画像から、CSS がロードされる前に DOMContentLoaded イベントがトリガーされたことがわかります。 CSS の背後に js コードがないためです。 次に、2 番目のケースをテストします。これは非常に簡単です。CSS の後に 1 行のコードを追加するだけです。 <!DOCTYPE html> <html lang="ja"> <ヘッド> <title>CSS ブロッキング</title> <メタ文字セット="UTF-8"> <meta name="viewport" content="width=デバイス幅、初期スケール=1"> <スクリプト> document.addEventListener('DOMContentLoaded', 関数() { console.log('DOMコンテンツが読み込まれました'); }) </スクリプト> <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/css/bootstrap.css" rel="スタイルシート"> <スクリプト> console.log('もう私の番ですか?'); </スクリプト> </head> <本文> </本文> </html> DOMContentLoaded イベントは、CSS の読み込みが完了した後にのみトリガーされることがわかります。したがって、次のように結論付けることができます。
要約する 上記から、次のような結論を導き出すことができます。
したがって、ユーザーが長時間白い画面を目にすることを避けるためには、次の方法などを使用して、CSS の読み込み速度を可能な限り上げる必要があります。
CSS がページレンダリングをブロックするかどうかについてのこの記事はこれで終わりです。CSS がページレンダリングをブロックすることについての詳細は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 |
<<: 私の CSS フレームワーク - base.css (ブラウザのデフォルト スタイルをリセット)
1. 仮想マシンバージョン15.5.1をダウンロードする公式サイトから直接最新バージョンをダウンロー...
この記事は、WindowsでのMySQL 8.0.11のインストールチュートリアルを記録しています。...
目次隠れた問題適応高さのソリューションまず解決策を提示してください。Vueスタックが必要な学生はvu...
多くの人が Linux Homebrew を使用しています。これをより良く使用するための 3 つのヒ...
目次1. 分離レベルコミットされていない読み取りREAD COMMITED (コミット読み取り/非反...
目次1. 配列の平坦化の概念2. 実装1. 減らす2. toString と split 3. 結合...
この記事では、参考までにMySQL 5.7.17圧縮版のインストール手順を紹介します。具体的な内容は...
vue3テレポート瞬間移動機能の使用は参考用です。具体的な内容は次のとおりです。テレポートは通常、瞬...
この記事の例では、参考までに、シンプルなショッピングカートモジュールを実装するためのjsの具体的なコ...
1. my.iniファイルにskip-grant-tablesを追加し、MySQLサーバーを再起動し...
序文最近、MySQL のインデックスについて読んでいました。結合されたインデックスを見ると、左端の原...
序文少し前に、興味深い問題を目にしました。Vue のデータが変更された後に、ビューを同期的に更新する...
なぜこのような記事を書いたかというと、数日前の夜、仕事が終わろうとしていたときに、業務側で突然、テー...
ドキュメント: https://github.com/hilongjw/vue-lazyload 1...
目次起源仮想メモリページングとページテーブルメモリのアドレス指定と割り当て関数プロセスメモリ管理デー...