HTML (Hypertext Markup Language、ハイパーテキスト・マークアップ・ランゲージ)は、 Web サイトのコンテンツに構造を指定するために使うコードです。具体的に言うと、構造というのは、段落や箇条書きのリスト、画像、テーブルなどのようなものです。タイトルが示すように、この記事では、HTML とその機能の基本的な理解ができるように説明します。
HTML はプログラミング言語ではありません。マークアップ言語と言って、コンテンツの構造を決めるものです。 HTML は 要素 の集まりでできています。要素とは様々なコンテンツがどのように見えるか、またどのように動くかを表現するためにタグで囲まれたまとまりです。タグ は言葉や画像を表示したり、他のページに移動するハイパーリンクを作ったり、文字を斜体にしたり、大きくしたり小さくしたり、色々なことが出来ます。例えば、次の文を見てください。
My cat is very grumpy
上の文を単体で表示したいなら、段落タグ (<p>) で文を囲うことでこれが段落であると指定することができます。
<p>My cat is very grumpy</p>
この段落要素についてもうちょっと詳しく見ていきましょう。
要素は主に以下のようなもので構成されています:
要素は属性 (Attribute)を持つことが出来ます。このような感じです:
属性とは要素に対し実際には表示されない追加情報を含んだものです。ここでは class が属性の名前で editor-note が属性の値です。 class 属性を使って要素に識別するための名前を与えていて、後でこの要素を指定してスタイルをつけたり様々なことができるようになります。
属性は次のような形式です。
メモ: ASCII の空白 (または " ' ` = < > 文字) を含まない単純な属性値は引用符を付けないままにすることができますが、コードの一貫性と理解を容易にするため、すべての属性値を引用することをお勧めします。
要素の中に他の要素を入れることも出来ます。これをネスト(または入れ子)と言います。もしあなたの猫が「とっても」機嫌が悪いことを表したいとしたら、「とっても」という単語を <strong> 要素に入れて単語の強調を表すことが出来ます。
<p>私のネコは<strong>とっても</strong>機嫌が悪い。</p>
しかしながら要素のネストは正しく行われなければなりません。上記の例ではまず始めに <p> 要素が開始され、その次に <strong> 要素が開始されています。そうしたならば、必ず <strong> 要素、 <p> 要素の順で終了しなければなりません。次の例は間違いです。
<p>私の猫は<strong>とっても機嫌が悪い。</p></strong>
要素は確実に他の要素の中もしくは外で開始し、終了する必要があります。上記の例のように要素が重複してしまうと、 Web ブラウザはあなたがしようとしていたことを推測してもっともよいと思われる解釈をするため、予期せぬ結果になることがあります。そうならないよう気を付けましょう!
コンテンツを持たない要素もあります。そのような要素を空要素 (empty elements) と呼びます。 <img> 要素を例に見ていきましょう。
<img src="images/firefox-icon.png" alt="My test image">
この要素は 2 つの属性を持っていますが終了タグ </img> はありませんし、内部にコンテンツもありません。これは image 要素はその機能を果たすためにコンテンツを囲うものではないからです。 image 要素の目的は画像を HTML ページの表示させたいところに埋め込むことです。
ここまでは HTML 要素についてみてきました。しかし要素単体ではあまり役には立ちません。ここからはどのようにしてそれぞれの要素を組み合わせ、 HTML ページ全体を作っていくのかを勉強していきましょう。ファイルを扱うで出てきた index.html に書いてあるコードをもう一度見てみましょう。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>My test page</title> </head> <body> <img src="images/firefox-icon.png" alt="My test image"> </body> </html>
この中にあるものは以下の通りです。
もう一度 <img> 要素について見ていくことにしましょう。
<img src="images/firefox-icon.png" alt="My test image">
前に説明したように、これは書いたところに画像を埋め込みます。画像ファイルのパスを値に持つ src (source) 属性を指定する事によってその画像を表示できます。
また、 alt (alternative; 代替) 属性も指定しています。これは以下の様な理由で画像を見られない人に向けて文字で説明をするものです。
alt 属性の内容は「説明する文」であるということが重要です。代替文は画像が伝えたいことをうまく言い表しているべきです。上の「My test image」はあまり良い例ではありません。 Firefox のロゴの代替文字列として適切なのは、「地球を囲む燃えるような狐の Firefox ロゴ」というようなものです。
あなたが用意した画像に良い代替文字列を付けてみましょう。
注記: アクセシビリティについて詳しくは MDN のアクセシビリティのページを参照してください。
この章では、文字列をマークアップするために使用する基本的な HTML 要素をいくつか見ていきます。
見出し要素は文書中の見出し、小見出しを指定することができるものです。通常の書籍でも主題、章題、副題があります。 HTML でも同じことが出来ます。 HTML では <h1> から <h6> の 6段階の見出しが用意されていますが、よく使うのはせいぜい 3 つから 4 つほどでしょう。
<h1>My main title</h1> <h2>My top level heading</h2> <h3>My subheading</h3> <h4>My sub-subheading</h4>
それでは、あなたの HTML の <img> 要素の上に適切なタイトルを付けてみましょう。
メモ: 見出しレベル1には暗黙のスタイルがあることがわかります。テキストを大きくしたり太字にしたりするために見出し要素を使用しないでください。これらはアクセシビリティや SEO などのその他の理由で使用されます。レベルをスキップせずに、ページ上に意味のある一連の見出しを作成してください。
先に説明したように、 <p> 要素は段落を示しています。通常の文章を書く時にはこの要素を頻繁に使うことになるでしょう。
<p>This is a single paragraph</p>
試しに <img> 要素のすぐ下にいくつか段落を作り、文章を書いてみましょう。(文章は Web サイトはどんな見た目にしたいですか?から持ってきても良いです。)
多くの Web のコンテンツはリストで出来ており、 HTML にはリストを表すための特別な要素が用意されています。リストは最低 2 つの要素を組み合わせて生成します。主要なリスト形式として番号付きリストと番号なしリストがあります。
リストの中に入るそれぞれのアイテムは <li> (list item) 要素の中に書きます。
例えば、次の段落の一部をリストにしたい場合、
<p>At Mozilla, we’re a global community of technologists, thinkers, and builders working together ... </p>
以下のようにマークアップします。
<p>At Mozilla, we’re a global community of</p> <ul> <li>technologists</li> <li>thinkers</li> <li>builders</li> </ul> <p>working together ... </p>
あなたのページに番号付きリストと番号なしリストを追加してみましょう。
リンクはとても重要です ―― これが Web をひとつの Web にします。リンクを追加するには、シンプルな要素 <a> を使えばよいです。 a は "anchor" を省略したものです。段落中の文字をリンクにするには次の手順で行います。
<a>Mozilla Manifesto</a>
<a href="">Mozilla Manifesto</a>
<a href="https://www.mozilla.org/en-US/about/manifesto/">Mozilla Manifesto</a>
アドレスの先頭にある https:// や http:// の部分 (プロトコルと言います) を書き忘れると、予期せぬ結果となってしまうかもしれません。リンクを作ったら、ちゃんとそれが遷移したいところに行ってくれるかを確かめましょう。
href は属性名として変に思うかもしれません。覚えにくかったら、 href は hypertext reference を表しているということを覚えておきましょう。
もしまだやってないのなら、ページにリンクを追加してみましょう。
ここまでの説明に沿ってやってきたのなら、下のようなページが出来上がっているはずです (ここでも見られます)。
もし途中で行き詰まってしまったなら、 GitHub にある完成版のコード例と見比べてみてください。
この記事では HTML の表面的な部分だけを勉強しました。もっと知りたい場合は HTML を学ぶを読んでみてくだい。