DOCTYPE HTMLを使用する理由

DOCTYPE HTMLを使用する理由
これがないと、ブラウザはページをレンダリングするときに Quirks モードを使用することがわかっています。また、ブラウザによって Quirks モードでのレンダリングの仕方が異なることもわかっています。したがって、次のような doctype を記述します。

コードをコピー
コードは次のとおりです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

幸いなことに、さまざまな Web 開発ツールは現在、テンプレート コードの挿入をサポートできるほど強力になっているため、この長くて面倒な doctype を 1 文字ずつ入力する必要はありません。しかし、もう十分だと思ったら、これを試してみてください:

コードをコピー
コードは次のとおりです。

<!DOCTYPE html>

わあ、とても簡潔ですね!メリットは明らかです。1. 間違いを心配せずにこの doctype を簡単に記述できます。2. 約 105 バイトの文字を節約できます。毎日数千万の PV があるサイトの場合、かなりのトラフィックを節約できます。3. 下位互換性があります。はい、html5 doctype はこのように記述され、最新のブラウザーはそれを認識します。

もしあなたも私と同じように、 DTD を指定しないとブラウザの奇妙なモードがオンになると思っていたなら、それは間違いです。正しい記述は、Quirks モードは doctype が定義されていない場合にのみ有効になる、つまり、特定の種類の dtd を指定せずにブラウザーが厳密モード (標準モード) でページをレンダリングできるようにするには、<!doctype html> を定義するだけでよい、というものです。すべてのブラウザには、Quirks モードと strict モード (標準モードと呼ぶ人もいます) の 2 つのモードが必要であることを確認しましょう。 Windows/Mac 版の IE 6、Mozilla、Safari、Opera はすべて両方のモードを実装していますが、IE 6 より前のバージョンは常に Quirks モードのままです。 2 つのモードについて知っておくべきことは次のとおりです。

  1. 標準化前に書かれたページには doctype がなかったため、doctype のないページは Quirks モードでレンダリングされます。
  2. 一方、Web 開発者が doctype を追加するということは、開発者が何をしているのかを理解していることを意味します。ほとんどの doctype は厳密モード (標準モード) をオンにし、ページは標準に従ってレンダリングされます。
  3. 新しいまたは不明な doctype はすべて、厳密モード (標準モード) で開始されます。
  4. 各ブラウザには、Quirks モードを有効にする独自の方法があります。このリストを参照できます: http://hsivonen.iki.fi/doctype/

注: 選択した doctype に対してページを検証する必要はまったくありません。doctype タグが存在するだけで、厳密モード (標準モード) を有効にすることができます。私の言っていることがまだ疑問に思う場合は、http://www.quirksmode.org/css/quirksmode.html#link2 にアクセスして、必要な情報を確認してください。答えを得るには、ほんの少しの JavaScript コードだけが必要です。それは次のとおりです。

コードをコピー
コードは次のとおりです。

モード=document.compatMode;

このコードを使用すると、現在のブラウザが Quirks モードか標準モードかを判断できます。このプロパティの互換性は疑う余地がありません。疑問がある場合は、http://www.quirksmode.org/dom/w3c_html.html#t11 を確認してください。テストしたいブラウザで http://wanz.im/demo/doctype-test.html にアクセスすれば、結果を見ることができます。私の知る限り、IE6 でも、Quirks モードは有効になりません。何か新しい発見がありましたら、メッセージを残してください。

<<:  ウェブページレイアウトに関する9つのヒント

>>:  MySQL パフォーマンス ストレス ベンチマーク ツール sysbench の使い方の紹介

推薦する

MySQLのトランザクション管理操作の詳細な説明

この記事では、MySQL のトランザクション管理操作について説明します。ご参考までに、詳細は以下の通...

Linux サーバーで MySQL リモート接続を有効にする方法

序文以前の非MKレコードを再編成するためのMySQLの学習説明する有効になっていない場合、データベー...

Mac に MySQL データベースをインストールし、環境変数を設定するためのグラフィック チュートリアル

目次MySQLをインストールする環境変数の設定MySQLをインストールするmysqlをダウンロードし...

MySQL 8.0.11 インストール概要チュートリアル図

インストール環境: CAT /etc/os-release CentOS システムのバージョン情報を...

Node.js を使用して C# のデータ テーブル エンティティ クラス生成ツールを作成する方法

Microsoft は T4 テンプレートを提供していますが、使用するのが非常に難しいと思います。ス...

JSはGMTとUTCのタイムゾーンを完全に理解しています

目次序文1. GMT GMTとはGMTの歴史2. UTC UTCとはUTC は次の 2 つの部分で構...

KTLツールはMySQLからMySQLへのデータの同期方法を実現します

ktl ツールを使用して、mysql から mysql にデータを同期します。 1. 新しいジョブス...

MySQL のデータの偶発的な削除の解決策と kill ステートメントの原則

mysql が誤ってデータを削除しました削除ステートメントを使用して誤ってデータ行を削除する誤ってデ...

MySQL 5.7 共通データ型

——「MySQL in Simple Terms (第 2 版)」からのメモ数値型整数型バイト最小最...

純粋な HTML+CSS でオリンピック リングを実装するためのサンプル コード

レンダリング コード - 青と黄色のリングを例に挙げます <div class="コ...

HTML Web ページにおける URL の表現

HTML では、一般的な URL はさまざまな方法で表現されます。相対 URL:コードをコピーコード...

Dockerはコンテナに入るためにルートを使用する

まずdockerコンテナを実行しますルートユーザーとしてコマンドを実行する sudo docker ...

tomcat デプロイメント プロジェクトの実装と IDEA との統合

目次Tomcat でプロジェクトを展開する 3 つの方法プロジェクトをwebappsディレクトリに直...

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

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