[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を書くには要素の次に属性にも詳しい理解が必要となってくるわけですが、「○○は△△が使える」と一つ一つ覚えていったところで全てを覚えるのは大変でしょう。
学生の頃の英語の勉強のように暗記しても仕方ないわけですから、ここは各要素、属性を体系的に理解し、「こういう機能だからこういうことが可能だろう」といったような覚え方をした方が早道だろうというわけです。また、仕様書には頻繁に専門用語が出てくるのでこうした言葉を覚えておくことも必要ですよね。
調べる前に、前提知識を持ってある程度自分で検討をつけられるようになっておけば日ごろの調べ物もスムーズになると思います★