概要
- カテゴリー
- 配置できる場所
-
- 上記カテゴリーの要素が置ける場所。
- 内容モデル
-
- Phrasing content。ただし、Interactive content、
tabindex
属性付要素のいずれをも子孫に含んではならない。通常は、内容テキスト等がボタンの表示ラベルになる。
- Phrasing content。ただし、Interactive content、
- 属性
-
- グローバル属性
type
→値は下記のとおり。デフォルトはsubmit
。当該フォームコントロールのタイプを指定する。submit
→フォームの送信ボタン。reset
→フォームのリセットボタン。button
→汎用ボタン。
name
→type
がsubmit
である場合の送信用名前文字列。type
がsubmit
である場合は、送信値とセットでフォーム送信される。属性値にisindex
を指定してはならない。value
→送信値を指定する。disabled
→ブーリアン属性。当該フォームコントロールを無効にする場合に指定する(操作できなくなり、送信値はフォーム送信されない)。この状態は、スクリプトを用いないと解除できない。form
→同一HTML文書内にあるform
要素のid
属性値。所属フォームを指定する。formaction
→type
がsubmit
である場合に、フォーム送信先のURLを指定。form
要素の指定より優先される。formenctype
→値は下記のとおり。type
がsubmit
である場合に、フォームのデータ形式を指定。form
要素の指定より優先される。非妥当値のデフォルトは、application/x-www-form-urlencoded
application/x-www-form-urlencoded
→すべての文字をURLエンコード形式でフォーム送信。multipart/form-data
→バイナリーデータ形式でフォーム送信(ファイルの場合はこれを指定する)。text/plain
→プレーンテキスト形式でフォーム送信。
formmethod
→値は下記のとおり。type
がsubmit
である場合に、フォーム送信形式を指定。form
要素の指定より優先される。非妥当値のデフォルトは、get
get
→URLの一部としてフォーム送信(URL末尾に、「?」の後に、「&」区切りで、「送信用名前文字列=送信値」を列挙)。post
→HTTP通信の本体データとしてフォーム送信。dialog
→直近の祖先dialog
要素の返し値(returnValue
プロパティの値)にセットして、ダイアログボックスを閉じる。
formnovalidate
→ブーリアン属性。type
がsubmit
である場合に、フォーム送信時の制約検証をしない場合に指定する。form
要素の指定より優先される。formtarget
→値は下記のとおり。type
がsubmit
である場合に、フォーム送信の結果を表示する場所を指定する場合に指定する。form
要素の指定より優先される。popovertarget
→ボタンによる操作のターゲットとなる要素(popover
属性が指定されたものに限る)のid
属性値。button
要素がフォームの送信ボタンとして機能する場合は、popovertarget
属性は機能しない。popovertargetaction
→値は下記のとおり。未指定あるいは非妥当値のデフォルトは、toggle
。popovertarget
属性で指定されたターゲットに対する操作を指定する。toggle
→表示・非表示の状態を切り替える。show
→表示状態にする。hide
→非表示状態にする。
type
がsubmit
でない場合は、formaction
、formenctype
、formmethod
、formnovalidate
、formtarget
は指定されてはならない。
- HTML構文におけるタグの省略
-
- 省略不可。
- WAI-ARIA
-
- デフォルト
role
は、button
。デフォルトrole
をrole
属性値に指定することは、推奨されない。 - デフォルト
role
以外では、checkbox
、combobox
、gridcell
、link
、menuitem
、menuitemcheckbox
、menuitemradio
、option
、radio
、separator
、slider
、switch
、tab
、treeitem
を指定可。 disabled
属性が指定されている場合は、aria-disabled
属性を指定すべきではない。disabled
属性が指定されている場合は、aria-disabled
属性値にfalse
を指定してはならない。
- デフォルト
- 視覚系ブラウザのデフォルトとして期待されるCSS
-
button { letter-spacing: initial; word-spacing: initial; line-height: initial; text-transform: initial; text-indent: initial; text-shadow: initial; text-align: center; display: inline-block; box-sizing: border-box; appearance: auto; }
- 視覚系ブラウザにおいて期待されるレンダリング
-
display
の計算値がinline
の場合は、{display: inline-block;
}のボタンを表示。display
の計算値が上記以外の場合は、{display: flow-root;
}のボタンを表示。- ただし、
display
の計算値がinline-grid
、grid
、inline-flex
、flex
、none
、contents
のいずれかの場合は、{display: 当該計算値;
}のボタンを表示。 inline-size
の計算値がauto
の場合は、内容が収まるインラインサイズとなる。- ボタン内部の匿名ボタン内容ボックスには、当該要素の内容を表示。
- 匿名ボタン内容ボックスは{
display: flow-root;
}で、その内容は縦横ともに中央寄せが原則。
- 制約検証
-
type
がreset
、button
の場合は、制約検証の対象から除外。そうでないなら、原則として、制約検証の対象。disabled
属性があれば、制約検証の対象から除外。
- 意味・用法
-
ボタンを表す。
type
がsubmit
ならば、フォームの送信ボタン。type
がreset
ならば、フォームのリセットボタン。type
がbutton
ならば、汎用ボタン。
アクセシビリティ関連
- 誤ってフォーム送信したら取り返しがつかないような場合は、ユーザーがフォーム送信を続行するか中断するかを選択できる何らかの確認方法をとるべきである(Techniques for WCAG 2.1 : G168, G155, G98)。
- 誤ってリセットしたら多大なやり直しが生じるような場合は、ユーザーがリセットを続行するか中断するかを選択できる何らかの確認方法をとるべきである(Techniques for WCAG 2.1 : G168)。
私見・補足
汎用ボタンは、主にクリックイベント等にスクリプトを設定して用いる。
disabled
の状態のときのレンダリングについては、HTML Living Standardには明記がないようなのだが、HTML4.01仕様のフォーム関連の規定では、ユーザーエージェントによるものとされていたので、それに基づいて実装しているブラウザが多いと思われる。
表示確認
- ソース
-
送信するとグーグル検索します。 <form action="http://www.google.co.jp/search"> <div><label>検索語→<input type="search" name="q" placeholder="検索キーワード" /></label></div> <div><label>typeがsubmit→<button type="submit" name="submit">送信</button></label></div> <div><label>typeがreset→<button type="reset">リセット</button></label></div> <div><label>typeがbutton→<button type="button" onclick="document.getElementsByTagName('form')[0].style.color='red'">文字を赤くするよ</button></label></div> <div><label>typeがsubmit、disabled指定→<button type="submit" name="submit" disabled="disabled">disabled</button></label></div> </form>
- 表示結果
- 送信するとグーグル検索します。