<!DOCTYPE html>を書かなかった場合どうなるか
HTMLの文書の最初に書く <!DOCTYPE html> は、ブラウザに「この文書はHTML5です」と教えるための宣言です。
もし、この宣言を書かずにHTMLを作ると、ブラウザは「古いHTMLかもしれない」と判断し、互換モード(Quirksモード) で表示します。
互換モード(Quirksモード)とは?
- 互換モードは、ブラウザが古い時代のHTMLや古いブラウザ向けに、表示を補正してくれるモードです。
- 過去のブラウザでは、HTMLの仕様が統一されていなかったため、表示がバラバラにならないように互換モードが作られました。
- つまり、ブラウザが「この文書は古いHTMLかもしれない」と判断すると、最新のCSSやHTML5の機能を正確に適用せず、古い方式に合わせて表示します。
互換モードで起こること
1. レイアウトが崩れる:CSSで指定した幅や余白が思った通りに表示されないことがあります。
2. ブラウザごとに表示が違う:Chrome、Edge、Firefoxなどで同じHTMLなのに見た目が変わることがあります。
3. HTML5の新しいタグや機能が正しく動かないことがある:<section> や <article> などHTML5で追加されたタグや、CSSの新しいプロパティが意図した通りに機能しないことがあります。
まとめ:
- <!DOCTYPE html> は、HTML5文書であることをブラウザに伝える「必須の宣言」です。
- 書かないとブラウザが互換モードで表示し、レイアウトやスタイルが崩れる可能性があります。
- 初心者のうちは必ず最初に書く習慣をつけると、後で困りにくくなります。
HTML文書の最上位タグである <html> は、文書全体を囲む「箱」のようなものです。
すべてのHTMLタグ(<head> や <body> など)は、この <html> の中に入ります。
<html lang="ja"> の記述には、それぞれ意味があります。
- html … HTML文書全体を表すタグ
- lang … language(言語) の略
- ja … Japanese(日本語) を表す
つまり language = Japanese(言語 = 日本語) となり、
「このHTMLは日本語の文書である」とブラウザに伝える意味になります。
lang="ja" は、この文書の言語が日本語であることをブラウザや検索エンジンに伝えるための属性です。
- ブラウザやスクリーンリーダー: 日本語を正しく表示・読み上げできるようになる
- 検索エンジン: 「このページは日本語ページ」と認識される
- 翻訳ツール: Google翻訳などで正しく言語を判別でき、翻訳精度が上がる
なぜ lang を <html> の中に書くのかというと、
文書全体の言語情報は最上位要素である <html> に設定するのが基本だからです。
もし一部だけ別の言語を使いたい場合は、<p lang="en"> のように個別のタグにも指定できます。
この指定をしないと、ブラウザや検索エンジンが文書を誤って英語など他の言語と判断する可能性があります。
その結果、文字化けや不自然な読み上げにつながる場合があるため、必ず設定しておくことが推奨されます。
まとめ:
1. <html> はHTML文書全体を囲む最上位タグ。
2. lang="ja" を指定することで、日本語文書であることを伝えられる。
3. 文書全体の言語は <html> に、部分的に言語を変える場合は各要素に指定する。
簡単に言うと、HTMLは「ウェブページを作るための言葉(ルール)」です。 単に文章を書くのではなく、ブラウザに「ここは見出し」「ここは段落」「ここは画像」「ここはリンク」と伝えるために使います。
普通のテキスト(.txt)
こんにちは、世界!
これはリンク: https://example.com
HTML(.html)
<h1>こんにちは、世界!</h1>
<p>これは<a href="https://example.com">リンク</a>です。</p>上の例のように、同じ内容でも HTML を使うと「リンクがそのままクリックできる」「見出しや段落として意味が伝わる」など、ブラウザが理解して適切に表示・操作できるようになります。
HTML は建物で言えば 「骨組み(構造)」、CSS は 「内装や色」、JavaScript は 「電気や動く仕組み」 にあたります。 骨組み(HTML)がないと、内装(見た目)や電気(動き)をうまく取り付けられません。
まず短く全体像を言うと、HTMLは「ウェブページの共通ルール」を決める言語で、 時代とともに機能が増えたり書き方が整理されてきました。各時代の「名前(バージョン)」と 「宣言(DOCTYPE)」は、ブラウザや検証ツールに対して「この文書はどのルールで書かれているか」を教える役割があります。
● HTML5(現在の推奨)
とても短くて分かりやすい宣言です。ブラウザに「HTML5のルールで解釈してね」と伝えます。
<!DOCTYPE html>
● 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(互換性あり)
古いブラウザ向けの緩いルールを残すための宣言(過去の互換性のために使われた)。例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
● XHTML 1.0(例:Strict)
XML のルールに従うため、文法はより厳密。HTML を XML として扱う場合の宣言例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
現代の標準的な HTML5 のファイルは、先頭にこれを書くだけでOKです:
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>サンプル</title> </head> <body> <h1>こんにちは</h1> </body> </html>
— まずはこの形(HTML5)を使い、少し慣れたら歴史や古い書き方(HTML4 / XHTML)を学ぶ、という順序がおすすめです。
HTMLのタグ(例:<html> や <body>)は、大文字でも小文字でも動作します。
例えば次の2つはブラウザ上で同じ結果になります。
大文字で書いたコード
<HTML>
<BODY>
<H1>こんにちは</H1>
</BODY>
</HTML>小文字で書いたコード
<html>
<body>
<h1>こんにちは</h1>
</body>
</html>では、なぜ大文字・小文字どちらでも動作するのかというと、HTMLの仕様上、 HTMLは元々 **タグ名は大文字・小文字を区別しない** というルールになっているためです。
しかし、慣習として、現在のHTML(HTML5)では小文字で書くことが推奨されています。理由は次の通りです:
まとめると:
これまで、<!DOCTYPE html> や <html lang="ja"> の説明をしてきました。
次に重要なタグは <head> です。
まず、次のようなコードを見てください:
<!DOCTYPE html>
<html lang="ja">
<body>
<h1>こんにちは</h1>
</body>
</html>
この例では <head> がありませんが、ブラウザ上で表示する分には問題なく動作します。
つまり、ページを表示するだけなら <head> は必須ではありません。
では、なぜ <head> タグを付けた方がよいのでしょうか?
理由は以下の通りです:
<head> 内に入れるのがルールになっており、将来的に拡張する際に便利。
つまり、<head> タグは「ページの設定や情報をまとめる場所」と考えると分かりやすいです。
表示だけではなく、正しい情報を伝えたり、拡張性を高めるために付けておくのが合理的です。
この <head> 内には、様々な要素を入れることができます:
<title>:ページのタイトル<meta charset="UTF-8">:文字コードの指定<link>:CSSやアイコンなどの外部ファイルのリンク<script>:JavaScriptファイルの読み込み<meta name="description">:ページの説明など、検索エンジン向け情報ここではまず、タイトルと文字コード について詳しく説明します。
<title>:ブラウザのタブや検索結果に表示されるページ名を指定。<meta charset="UTF-8">:文字化けを防ぎ、
日本語を正しく表示するための設定。