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 の使い方の紹介

推薦する

React onClickにパラメータを渡す問題について話しましょう

背景下のようなリストでは、削除ボタンをクリックすると削除操作を実行する必要があります。 リスト生成:...

Dockerコンテナがホストポートにアクセスできない場合の解決策

最近、仕事中に問題が発生しました。Docker コンテナがホストの redis にアクセスできず、t...

Vue3 Reactivityの実装方法を教えます

目次序文始めるちょっとした考えコードの実装真似する実装トラックトリガーの実装観察の実装計算の実装序文...

Docker を使用して MySQL 5.7 および 8.0 マスター スレーブ クラスターをデプロイする方法

> MySQL 5.7 クラスタ マスターとスレーブをデプロイする (テストのみ)イメージバー...

Linux の総合システム監視ツール dstat の詳細な例

オールラウンドなシステム監視ツール dstat dstat は、vmstat、iostat、nets...

Linux カーネル デバイス ドライバー Linux カーネル 基本メモの概要

1. Linuxカーネルドライバモジュールの仕組み静的ロードでは、ドライバモジュールをカーネルにコン...

モバイルウェブ画面適応(rem)

序文最近、フロントエンドの学習に関する以前のメモを整理したところ、モバイル Web 画面の適応 (r...

React-Dropzone をベースにアップロードコンポーネント機能を開発する (サンプルデモ)

今回はReact-Flaskフレームワーク上でアップロードコンポーネントを開発するスキルについてお話...

ウェブページでコンテンツを引用するためによく使われるHTMLタグをマスターする

長い引用には blockquote を、短い引用には q を、参考文献には cite を使用します。...

クールな充電アニメーションを実現する純粋なCSS

CSS のみを使用してどのような充電アニメーション効果を作成できるかを見てみましょう。バッテリーを...

クロスドメイン js フロントエンドの 8 つの実装ソリューション

目次1. jsonp クロスドメイン2. document.domain + iframe クロスド...

ボタンのタイプが送信として指定されていません。ボタンをクリックしても、指定された URL にジャンプしません。

現在、プロジェクトの要件により、フォームの送信を制御し、送信前にデータを検証および処理するために j...

MySQLの重複排除操作を極限まで最適化する方法

目次1. インデックスと変数の賢い使用1. インデックスなしの比較テスト2. created_tim...

MySQL をベースにしたシンプルな検索エンジンを実装する

目次MySQL ベースの検索エンジンの実装1. ngram全文パーサー2. 全文インデックスを作成す...

ウェブページ作成に役立つコード

<br />ホームページの右側にあるスクロールバーを削除するにはどうすればよいですか? ...