稀にドックタイプ宣言の無いサイトの案件が舞いこんでくる事があります。ドックタイプ宣言は無くてもいいのでしょうか?
そもそもドックタイプ宣言は何のためにあるのか、ドックタイプについて調べてみましょう。
ドックタイプ宣言について
HTMLには複数のバージョン(HTML4.01、XHTML1.0、HTML5等)があり、ドックタイプはHTMLファイルがどのバージョンで作成されているかを表す宣言文です。
それぞれのバージョンによってHTMLタグの記述方法や定義が異なるため、正しいドックタイプ宣言をする必要があります。
ドックタイプ宣言の種類
ドックタイプ宣言は各バージョンによって書き方が変わってきます。
HTML 4.01
HTML 4.01 Strict DTDの場合
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
HTML 4.01 Transitional DTDの場合
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
HTML 4.01 Frameset DTDの場合
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
XHTML
XHTML 1.0 Strict DTDの場合
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML 1.0 Transitional DTDの場合
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML 1.0 Frameset DTDの場合
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.1 DTDの場合
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
XHTML Basic 1.1 DTDの場合
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">
HTML5
<!DOCTYPE HTML>
ドックタイプ宣言が無いとどうなる?
ドックタイプ宣言が無いといろいろ問題が出てきます。
jQueryなどのJavaScriptライブラリが動かなくなる
ライブラリによってはドックタイプ宣言が無いと動かなかったり、正常に動かなくなるものがあります。
前に携わった案件ではjQueryが使えず、ネイティブJavaScript(ライブラリを使用しないでコードを書く)で書きなおさなければいけないことがありました・・・
スタイルシートが意図したように表示されない場合がある
IE系のブラウザではQuirksでページをレンダリングしてしまうので、CSSの解釈も変わってしまい意図したようにスタイルの指定がされない場合があります。
海外のサイトですが、strictモード時とQuirksモード時のCSSの解釈の違いがまとめられたサイトがあるのでリンクを載せておきます。
CSS - Quirks mode and strict mode
HTMLのバリデーションで正しくバリデートされなくなる
W3Cが提供しているマークアップ・バリデーション(Markup Validation Service)などのバリデーションツールで正しくバリデーションされない可能性があります。
そもそもですが、ドックタイプ宣言が無いこと時点でエラーです。
最終的に・・・
ドックタイプ宣言は必要です!
ドックタイプ宣言が無いとCSSやJavaScriptで問題が出てくるので、ドックタイプ宣言は必ず書きましょう!
ドックタイプ宣言は種類がたくさんあるんで、テンプレートを使いまわすようにしています。いつも使っているテンプレートを公開しておきます。
- HTML 4.01 Strict DTDのテンプレート
- HTML 4.01 Transitional DTDのテンプレート
- XHTML 1.0 Strict DTDのテンプレート
- XHTML 1.0 Transitional DTDのテンプレート
- HTML5のテンプレート
一括ダウンロードはこちらのリンクからどうぞ!!!