なぜCSSをヘッドタグに配置する必要があるのか

なぜCSSをヘッドタグに配置する必要があるのか

考えてみてください。なぜcssjavascriptのようにbodyタグの末尾ではなく、 headタグに配置する必要があるのでしょうか?

口先だけではダメ、コードを見せてください。

さて、結果を得るためのコードをいくつか書いてみましょう。

chromeコンソールのちょっとしたコツをご紹介します。

ここに画像の説明を挿入

download速度を制限することは、テストに非常に役立ちます。詳細をはっきりと見ることができます。

download速度を 40kb/s に制限してテストを開始しましょう。

cssbodyタグの最後に導入された場合

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
 <メタ文字セット="UTF-8">
 <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
 <meta http-equiv="X-UA-compatible" content="ie=edge">
 <title>ドキュメント</title>
</head>
<本文>
 <h1>こんにちは世界</h1>
 <link rel="スタイルシート" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/css/bootstrap.min.css">
</本文>
</html>

ブラウザで効果を確認してください:

bootstrap.min.cssファイルが読み込まれていない場合、Web ページにはすでに「Hello world」が表示されていますが、スタイルはデフォルトのスタイルであり、Web ページが 1 回レンダリングされていることを示しています。

ここに画像の説明を挿入

bootstrap.min.cssファイルが読み込まれると、Webページ上の「Hello world」のスタイルが変わり、フォントサイズも大きく変わります。そのため、Webページがreflowたと判断できます。

ここに画像の説明を挿入

CSS が head タグに導入される場合:

<!DOCTYPE html>
<html lang="ja">
<ヘッド>
 <メタ文字セット="UTF-8">
 <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
 <meta http-equiv="X-UA-compatible" content="ie=edge">
 <title>ドキュメント</title>
 <link rel="スタイルシート" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/css/bootstrap.min.css">
</head>
<本文>
 <h1>こんにちは世界</h1>
</本文>
</html>

ブラウザで開いて効果を確認してください:

bootstrap.min.cssが読み込まれていない場合、Web ページには何も表示されず、現時点では Web ページがレンダリングされていないことが示されます。

ここに画像の説明を挿入

bootstarp.min.cssが読み込まれると、Web ページにbootstrapスタイルの「Hello world」が表示され、Web ページがレンダリングされたことが示されます。

ここに画像の説明を挿入

上記の 2 つの例から、次のことがわかります。

body タグの末尾に css を配置すると、 DOMTreeが構築された後、 RenderTreeが構築され、レイアウトが計算されてレンダリングされます。css を読み込んで解析した後、 CSSOMTreeが構築され、 DOMTreeRenderTreeが再構築され、レイアウトが再計算されて Web ページがレンダリングされます。
CSS をheadタグに配置すると、まず CSS が読み込まれ、次に CSS が解析されてCSSOMTreeが構築されます。同時に、 DOMTreeが構築されます。CSSOMTree とDOMTreeが構築された後、 RenderTreeが構築され、レイアウトを計算して Web ページをレンダリングしCSSOMTree 。この 2 つを比較すると、 cssheadタグに配置されており、 bodyタグの末尾に配置されたcssよりも少なくなっています。RenderTree RenderTree構築が 1 つ少なく、レイアウトの計算が 1 つ、Web ページのレンダリングが 1 つ少ないため、パフォーマンスが向上します。また、CSS が body タグの末尾に配置されると、Web ページに「裸の」HTML が短時間表示され、ユーザー エクスペリエンスに悪影響を及ぼします。

もう一つのちょっとしたコツをご紹介します。

ここに画像の説明を挿入
ここに画像の説明を挿入

上記の操作により、Web ページの解析とレンダリングのプロセス全体を表示できるため、「CSS ファイルを head に配置する利点は何ですか?」という質問を解決するのにも非常に役立ちます。

CSS を head タグに配置する理由に関するこの記事はこれで終わりです。CSS head タグに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  HTMLとCSSを使用して、自分だけの暖かい男「Dabai」を作成します

>>:  CentOS6 アップグレード glibc 操作手順

推薦する

MySQL InnoDB 監視 (システム層、データベース層)

MySQL InnoDB 監視 (システム層、データベース層) MySQL の監視に関しては、My...

Dockerコンテナ内で2つのプロセスを開始するときのDockerfile実装コード

最近、cronスケジュールタスク用のdockerを作りたいと思っており、Dockerfileで次のよ...

LNMP と phpMyAdmin を Docker にデプロイする方法

環境準備:複数のコンテナに基づいてホストに lnmp をデプロイします。 nginx サービス: 1...

CSS 擬似要素::マーカーの詳細な説明

この記事では、CSS ::markerの興味深い疑似要素を紹介します。これを使用すると、テキスト番号...

iframeを使用してページを呼び出すとページがキャッシュされるかどうかの簡単な分析

最近、毎日変更されるページを iframe を使用して呼び出す必要があるプロジェクトがあります。その...

MySQLに絵文字表現を保存する詳細な手順

原因: java.sql.SQLException: 列の文字列値が正しくありません: '\...

LinuxにPHP7をインストールする方法の詳細な説明

Linux に PHP7 をインストールするにはどうすればいいですか? 1. 依存パッケージをインス...

Windows 10 での mysql5.5 データベース コマンドラインの中国語文字化け問題を解決する

システムをリセットした後、かなり前にインストールした MySQL データベースのコンソール クエリで...

CSS で 2 つの固定列と 1 つの適応列を実装するいくつかの方法

この記事では、CSS で 2 つの固定列と 1 つのアダプティブ列を実装するいくつかの方法を紹介し、...

Alibaba Cloud ECS centos6.8 に MySql5.7 をインストールして設定するチュートリアル

Alibaba Cloud yum コマンドでのデフォルトの MySQL バージョンは 5.17**...

円形/扇形メニューを2分で実装する方法を教えます(基本バージョン)

序文このプロジェクトでは円形のメニューが必要です。オンラインで検索しましたが、適切なものが見つからな...

Linux サービスでファイアウォールを有効にする 2 つの方法

方法は2つあります: 1. サービス方法ファイアウォールのステータスを確認します。 [root@ce...

axios を使用してプロジェクト内の複数の繰り返しリクエストをフィルタリングする方法

目次1. はじめに:この場合、通常は 2 つのアプローチがあります。 2. CancelToken ...

Nginx の break と last の違いの詳細な分析

まずは違いについて話しましょう最後に、書き換えられたルールは、次の場所と一致させるために書き換えられ...

MySQL が起動直後にシャットダウンする問題 (ibdata1 ファイルの破損が原因) に対する完璧な解決策

コンピュータ ルームのサーバー上の mysql がしばらく実行されていたのですが、突然、再起動しても...