HTMLの基礎
HTML文書の基本構成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
- 記号
<
と>
で囲まれた部分をタグ(tag)もしくは要素(element)と呼ぶ - 必要のないタグは省略することもできる
- HTML5の場合,必須とされている記述は「!DOCTYPE」宣言と「title」タグのみ
タグの基本ルール
開始タグ(<タグ名>
)と終了タグ(<!--タグ名-->
)があり,その中に中身を記述する.
<h1>今日の出来事</h1>
終了タグが存在しないタグ(br
,img
,hr
,meta
,input
,embed
,link
など)については,<タグ名 />
のように記述する.
<br />
終了タグ/>
の話
もともとはXHTMLで採用されていた書き方で,HTML4以前は非推奨な記法だったが,HTML5からは正式にサポートされるようになっている.
付加情報は属性として<タグ名 属性名1="属性値1" 属性名2="属性値2">
のように記述する.複数指定可能.
<img width="200" src="photo.png" />
タグはネスト構造を取り,一番外側には<html>
タグが一つだけある.
よく使われるタグ
タグの解説ページを探すとたくさんの情報が見つかります.とりあえずは以下ぐらいを覚えておきましょう. 必要になったときに調べるようにしましょう.
タグ名 | 用途 |
---|---|
h1 | 見出し1(heading 1) |
h2 | 見出し2(heading 2) |
h3 | 見出し3(heading 3) |
p | 段落(paragraph) |
div | グループ化 |
span | テキストの一部 |
ul | 箇条書き(unordered list) |
ol | 番号付リスト(ordered list) |
li | リストの各項目(list item) |
img | 画像(image) |
br | 改行(break line) |
button | ボタン |
input | インプット |
a | 文書間のリンク記述(anchor) |
table | テーブル |
tr | テーブルの行 |
td | テーブルの各セル |
DOM(Document Object Model)
DOMとは,
- 文書をオブジェクトとして扱うモデル(英語そのままの意味)
- HTMLとJavaScriptの橋渡しになる
- JavaScriptのプログラムからHTML文書をコントロールできる,ぐらいの理解でも構わない
HTML文書の構造
すべてのHTML文書は,html
タグ(要素)を頂点とするtree構造である.
1 2 3 4 5 6 7 8 9 10 11 |
|
documentオブジェクト
HTML文書がブラウザに読み込まれると,その文書のhtml
要素がdocument
というオブジェクトに保存される.「オブジェクト指向的なプログラミング」についてはいずれ解説するが,C言語しか知らない,という知識の範囲であれば,オブジェクトは「構造体をもっともっと拡張した概念で実現する」ぐらいには最低限,認識しておいて欲しい.
オブジェクトについて一言
C言語では「データ」と「手続き」が別々に存在し,プログラムで指定した順番で「手続きがデータを処理している」.これに対し,オブジェクト指向では,オブジェクトそのものがデータと手続きの両方を持っている.特に,データのことをプロパティ,手続きのことをメソッドなどと呼び,この「プロパティとメソッドを持ったものをオブジェクト」という.
このdocument
を起点として,JavaScriptからHTMLの各要素にアクセスすることができる.
1 2 3 4 5 6 7 8 9 10 |
|
これをFirefoxやchromium-browserなどのブラウザで表示すると以下のようになるはず.
さて,この文書のDOMを操作してみよう.例題のhtmlファイル中では,<h1>
タグにid
属性を追加してある.これをいじってみる.
Firefoxの場合,F12キー(またはCtrl+Shift+Iでも良い),あるいは「ツール」メニューから「ウェブ開発」「開発ツールを表示」とすると,開発者ツールウィンドウが現れる(chromium-browserの場合はデベロッパツールという名称).その中から「コンソール」タブを選択し,下端の方にある入力領域「≫
」に次のように入力してみよう.
document.getElementById("large_head").textContent="Hello!"
入力間違いがなければ,以下のように表示テキストが変わるはずだが確認できただろうか.
ここで行った操作は,JavaScriptからDOMを操作していることに他ならない.先に説明したようにdocument
オブジェクトにはhtml
要素が格納されているが,さまざまなメソッド(機能や関数)を使って要素を取得することもできる.上の例では,getElementByID
メソッドを使ってtextContent
というプロパティ(属性値)に値を代入することで表示テキストを変更した.
詳細はおいおい勉強していくとして,当面は
- HTML文書には,非常に多くの要素が含まれている
document.getElementByID()
で要素にアクセスできる- 要素にはいろいろなプロパティがあり,値を代入するとリアルタイムに更新される
ぐらいを覚えておけばよい.
イベント
DOMの他にもうひとつ,HTMLとJavaScriptを結びつけるものがイベント(Event)である.
ブラウザで発生するイベント
主なイベントとしては以下がある.
- ページを読み込んだ
- マウスが動いた
- マウスがクリックされた
- キーが押された
- キーが離された
- ボタンがクリックされた
具体例で見てみよう.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
このhtmlファイルをブラウザで読み込んで実行すると以下のようになる.(身長・体重を入力して実行ボタンを押す)
イベントハンドラ(Event Handler)
上の例では,19行目に
19 |
|
とある.これがボタンの記述であり,ボタンがクリックされたときにonClick
属性で指定された「calc_bmi()
」が実行される.このように,何らかのイベント(この場合はクリックされた)に応じて実行される関数をイベントハンドラ,あるいはコールバック関数という.(calc_bmi
がイベントハンドラ)
プログラムは,<script>
要素の中に記述する.
7 8 9 10 11 12 |
|
- 8行目の
document.getElementById("height").value
で,17行目の入力ボックス<input id="height" />
に入力された値を取得できる(height
というidをつけていることに注意.もちろん,この名前自体は自由に変更できる) - id=
weight
についても同様 - BMIの計算結果を変数
bmi
に格納し,それをbmi
というidを持つ段落ブロック(<p id="bmi">
)に書き込んでいる