[HTML5 入門]HTML5要素に指定できる属性の分類、書き方の違いについて
この記事は約8分ぐらいで読めます

WEBCRE8.jpではHTML5の入門記事をたまに書いています。私が販売しているHTML5KARUTAも、こうしたHTML5の学習のための活動の一つですが、タグだけを覚えてもちゃんとしたコーディングは出来ません。
http://roadstohtml5.com/html5karuta/
HTMLの各要素には属性というものがあります。これもまあまあたくさんあるので全部解説するわけではないんですけど、まずこの記事ではどういう種類のものがあるのかを確認してみましょう。
…といいつつこれは私の備忘録でもあるんですがw 興味ある人はお付き合いください★
HTMLの属性とは
HTMLにおける属性(Attribute)とは、HTMLで各要素のタグに指定する設定の事です。例えばハイパーリンクであるa要素のaタグにはhref属性を指定します。href属性の属性値(value)にはURL等が入りますね。
要素自体のタグ名の後に続く一つ一つが属性です。そしてその属性には、予め指定できる属性値が一つに決まっているもの、いくつかに決まっているもの、ルールが決まっているもの、なんでも指定できるものがあります。
グローバル属性(Global attributes)
その前にまずはリファレンスで頻繁に見かけるこの言葉の解説。
グローバル属性(Global attributes)とは、HTML全てのタグにつけることのできる属性です。
- accesskey
- class
- contenteditable
- contextmenu
- dir
- draggable
- dropzone
- hidden
- id
- lang
- spellcheck
- style
- tabindex
- title
- translate
- 独自データ属性
- イベント・ハンドラ・コンテンツ属性
- role属性と- aria-*属性
id属性、class属性、accesskey等を見るとわかる通り、これらはその要素のモードやCSS等の外部リソースとの結び付けを表すもので、どのタグにも設定できなければ困るようなものです。他の属性も見てみて、「へーこれ設定出来たんだ」とか納得してくださいw
今回は一つ一つの意味については触れずあくまで分類とその扱いについてだけの話です。
その他グローバル属性についての解説はおなじみHTML5.jp、そしてAdobe Developer Connectionの文書に詳しいです。
- グローバル属性 - HTML5タグリファレンス - HTML5.JP
- HTML5セマンティクスの理解 -- 第2部:ドキュメント構造とグローバル属性 | Adobe Developer Connection
独自データ属性(data-* attributes)
独自データ属性(data-* attributes)とは、data-に続く任意の文字列からなるユーザーが自由に定義してよい属性です。マークアップ、またはフレームワーク等を作成する人が勝手に作っていい属性で、グローバル属性と同じくどのHTMLの要素にも設定できます。とは言え無目的に作っても仕方ないですがw
例を挙げるとjQuery Mobile、Twitter Bootstrap等のフレームワーク内で使用されています。「data-roleって何だろう?」と思ったこともいるかと思います。あれは勝手に作ってるって事ですねー。
イベント・ハンドラ・コンテンツ属性(Event handler content attributes)
イベント・ハンドラ・コンテンツ属性(Event handler content attributes)は、それぞれの属性に決められたタイミングで発生する処理を設定するための属性です。これらもどのHTML要素にも設定できます。
- onabort
- onblur
- oncanplay
- oncanplaythrough
- onchange
- onclick
- oncontextmenu
- oncuechange
- ondblclick
- ondrag
- ondragend
- ondragenter
- ondragleave
- ondragover
- ondragstart
- ondrop
- ondurationchange
- onemptied
- onended
- onerror
- onfocus
- onformchange
- onforminput
- oninput
- oninvalid
- onkeydown
- onkeypress
- onkeyup
- onload
- onloadeddata
- onloadedmetadata
- onloadstart
- onmousedown
- onmousemove
- onmouseout
- onmouseover
- onmouseup
- onmousewheel
- onpause
- onplay
- onplaying
- onprogress
- onratechange
- onreadystatechange
- onreset
- onscroll
- onseeked
- onseeking
- onselect
- onshow
- onstalled
- onsubmit
- onsuspend
- ontimeupdate
- onvolumechange
- onwaiting
これも一つ一つの解説は割愛します。
role属性(ARIA Role Attribute)、aria-*属性(aria-* attributes)
一応触れておきますが、WAI-ARIAのaria-*とつく属性もグローバル属性に含まれます。これについては後々記事を書きたい、というかもっと勉強したいと思ってるんですけどなかなか…w
論理属性(Boolean attributes)
論理属性(Boolean attributes)とは、on状態とoff状態しかない属性のことです。
例えばchecked、disabled等です。
- checked
- disabled
- reversed
- seamless
- readonly
- loop
- hidden
- open
- scoped
- multiple
- async
- defer
- ismap
video要素のautobuffer属性とtime要素のpubdate属性は廃止されています。
これらはchecked="checked"、checked=""、checkedとこれらのうちどのような書き方をしていてもonになります。私は気持ち悪いのでいちいちchecked="checked"と統一した書き方をしています。
列挙属性(Enumerated attributes)
列挙属性(Enumerated attributes)は、いくつかの決められたキーワードのみが設定でき、それがそのモードを表す属性です。
- autocomplete
- contenteditable
- dir
- draggable
- enctype
- formenctype
- formmethod
- method
- scope
- shape
- spellcheck
- type (command)
- type (button)
- type (input)
- type (menu)
- wrap
列挙属性については以下のサイトが参考になりました。
まとめ
大体この記事で書きたかったことは書きました。他に情報の足らないところ、指摘等ありましたらお願いします。
その他、仕様書には様々な用語が出てきます。HTMLを書くには要素の次に属性にも詳しい理解が必要となってくるわけですが、「○○は△△が使える」と一つ一つ覚えていったところで全てを覚えるのは大変でしょう。
学生の頃の英語の勉強のように暗記しても仕方ないわけですから、ここは各要素、属性を体系的に理解し、「こういう機能だからこういうことが可能だろう」といったような覚え方をした方が早道だろうというわけです。また、仕様書には頻繁に専門用語が出てくるのでこうした言葉を覚えておくことも必要ですよね。
調べる前に、前提知識を持ってある程度自分で検討をつけられるようになっておけば日ごろの調べ物もスムーズになると思います★
