Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

button 要素

概要

HTML の <button> 要素は、クリック可能なボタンを表します。

コンテンツカテゴリ フローコンテンツフレージングコンテンツインタラクティブコンテンツリスト化ラベル付け可能送信可能フォーム関連要素、パルパブルコンテンツ
許可された内容 フレージングコンテンツ
タグの省略 不可。開始と終了タグの両方が必要。
許可された親要素 フレージングコンテンツを受け入れるすべての要素
DOM インターフェイス HTMLButtonElement
要素タイプ インライン

属性

この要素はグローバル属性を持ちます。

autofocus HTML5
オートフォーカス。この要素は、(ユーザが別の操作によって動作を上書きしない限り) ページ読み込み時に button 要素にインプットフォーカスを置くように指示するための属性です。文書中のフォーム関連要素のうちの一つだけに、この属性を指定することができます。値には属性名と同じ autofocus のみが指定可能です。
autocomplete
<button> 要素においてこの属性は、Firefox 独自の非標準属性です。Firefox のデフォルト動作は他のブラウザと異なり、ページを再読み込みしても <button>動的に無効化した状態を維持します。この属性の値を off にする (すなわち autocomplete="off") と、この機能が無効になります。バグ 654072 をご覧ください。
disabled

この論理属性は、ユーザによるボタン操作を無効化します。この属性が指定されていない場合、ボタンを内包する親要素の設定値を継承します。例えば、ボタンの祖先となる <fieldset> 要素などにも disabled 属性が指定されていないのであれば、この子要素である button 要素は使用可能のままであるということです。

Firefox のデフォルト動作は他のブラウザと異なり、ページを再読み込みしても <button>動的に無効化した状態を維持します。この機能は autocomplete 属性で制御できます。

form HTML5
button 要素が紐付けられた form 要素 (form owner) の id。属性値は同一文書内の <form> 要素の id 属性と同一の値としなくてはなりません。この属性を指定しない場合、<button> 要素は紐付ける form 要素の子孫要素として配置しなくてはなりません。HTML5 で定められたこの属性によって、紐付けたい <form> 要素の外 (同一文書内に限る) に <button> 要素を配置することが可能になりました。
formaction HTML5
ボタンによって送信された情報を処理するプログラムの URI。指定した場合は、そのボタンの属するフォームの action 属性よりも優先されます。
formenctype HTML5
ボタンを送信ボタンとして使用する場合、ブラウザがフォーム情報をサーバーに送信するために使用するコンテンツの種類を指定します。以下の値を指定可能です。
  • application/x-www-form-urlencoded: 初期値。属性を指定していない場合、この値が使用されます。
  • multipart/form-data: <input> 要素の type 属性に file を指定して使用する場合に使用。
  • text/plain: プレーンテキストとしてフォームデータを送信する場合に使用。

この属性が指定されている場合、button 属性が紐付けられた form 要素 (form owner)の enctype 属性より、ボタンのそれが優先されます。

formmethod HTML5
ボタンが送信ボタンの場合に、ブラウザがフォーム情報を伝送するために使用する HTTP メソッド。以下の値を指定可能です。
  • post: フォームからのデータはフォームの内容を含めてサーバーに送信されます。
  • get: フォームからのデータはセパレーターとして '?' を使用して form 属性の URI に追加され、その結果となる URI をサーバーに送信します。フォームが ASCII 文字列だけを含み、まったく副作用がない場合にのみ、このメソッドを使用してください。

ボタンに対しこの属性が指定された場合、これはボタンの属するフォーム (form owner) の method 属性より優先して使用されます。

formnovalidate HTML5
この論理属性は、ボタンが送信ボタンである場合に、フォームデータ送信時に内容をバリデートしないように指定するものです。この属性が指定された場合、ボタンの属するフォーム (form owner) の novalidate 属性より優先して使用されます。
formtarget HTML5
ボタンが送信ボタンである場合、フォームの送信後に受信したレスポンスを表示する場所を示す名前もしくはキーワード。これは、ブラウジングコンテキスト (タブ、ウィンドウ、またはインラインフレーム) の名前またはキーワードを参照します。この属性が指定された場合、ボタンの属するフォーム (form owner) の target より優先されます。以下のキーワードは特別な意味を持ちます:
  • _self: 同じブラウジングコンテキストにレスポンスデータを読み込みます。この値は、属性が指定されていない場合のデフォルト値です。
  • _blank: 新しい無名のブラウジングコンテキストにレスポンスデータを読み込みます。
  • _parent: 現在のコンテキストの親のブラウジングコンテキストにレスポンスデータを読み込みます。親要素がない場合、このオプションは _self と同じ振る舞いをします。
  • _top: 最上位のブラウジングコンテキスト (現在のコンテキストの祖先で、それ以前の祖先をもたないブラウジングコンテキスト) にレスポンスデータを読み込みます。親要素がない場合、このオプションは _self と同じ振る舞いをします。
name
フォーム情報とともに送信される、ボタンの名前。
type
ボタンの種別。以下の値を指定可能です。
  • submit: 自身が属するフォームのデータをサーバーに送信するボタンとなります。これは type 属性が指定されていない場合、もしくは属性値が動的に空にされたり不正な値にされた場合のデフォルトの動作です。
  • reset: ボタンに紐づけられたフォームコントロールの値をすべて初期値に戻すリセットボタンになります。
  • button: type 属性に button を指定したボタンには、デフォルトの動作はなく、クリックするなどしても何も起こりません。クライアントサイドスクリプトで要素にイベントを設定することにより、操作時の挙動を設定することができます。
value
ボタンの初期値。

<button name="button">Click me</button>

このボタンは CSS が適用されている点に注意してください。

仕様

仕様書 策定状況 コメント
WHATWG HTML Living Standard
The definition of '<button>' in that specification.
Living Standard  
HTML5
The definition of '<button>' in that specification.
勧告  
HTML 4.01 Specification
The definition of '<button>' in that specification.
勧告  

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート 1.0 1.0 (1.7 or earlier) (有) (有) (有)
formaction 属性 9.0 4.0 (2.0) 10 ? ?
formenctype 属性 9.0 4.0 (2.0) 10 10.6 ?
formmethod 属性 9.0 4.0 (2.0) 10 ? ?
autofocus 属性 5.0 4.0 (2.0) 10 9.6 5.0
機能 Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート (有) 1.0 (1.0) (有) (有) (有)
formaction 属性 ? 4.0 (2.0) ? ? ?
formenctype 属性 ? 4.0 (2.0) ? ? ?
formmethod 属性 ? 4.0 (2.0) ? ? ?

クリックとフォーカス

<button> をクリックしたときに (デフォルトで) フォーカスを得るかは、ブラウザおよび OS により異なります。

<input> 要素では type="button"type="submit" ともに同じ動作になります。

<button> をクリックするとフォーカスを得るか?
デスクトップ版ブラウザ Windows 8.1 OS X 10.9
Firefox 30.0 はい いいえ (tabindex がある場合でも)
Chrome 35 はい はい
Safari 7.0.5 N/A いいえ (tabindex がある場合でも)
Internet Explorer 11 はい N/A
Presto (Opera 12) はい はい
<button> をタップするとフォーカスを得るか?
モバイル版ブラウザ iOS 7.1.2 Android 4.4.4
Safari Mobile いいえ (tabindex がある場合でも) N/A
Chrome 35 いいえ (tabindex がある場合でも) はい

注記

<button> 要素のスタイリングは <input> 要素よりもずっと簡単で、複雑なスタイリングも可能です。なぜなら <input> はテキストの value 属性のみを受け入れるのに対して、<button> は内部に <em><strong><img> 等、他の HTML 要素を持つことが可能であり、button 要素自身のみならず、子要素やそれらの擬似要素 (:after:before) に対するスタイリングも可能だからです (※ただし空要素である は擬似要素を持つことはできません)。

IE7 には <button type="submit" name="myButton" value="foo">Click me</button> でフォームデータを送信したとき、POST データが myButton=foo ではなく myButton=Click me として送信されるバグがあります。
IE6 は IE7 と同様のバグを持ち、さらに悪いことにボタンを介してフォームデータを送信すると、フォーム内のすべてのボタンが送信されるバグも持っています。
このバグは IE8 で修正されました。

Firefox はアクセシビリティの観点から、フォーカスされたボタンに小さな点線ボーダーを表示するようになっています。このボーダーはブラウザのデフォルト・スタイルシートで宣言されています。これは次のようなセレクタを用い、あなた自身のスタイルで上書きすることができます。
button::-moz-focus-inner { }
アクセシビリティに配慮したスタイリングを心がけてください。

Firefox のデフォルト動作は他のブラウザと異なり、ページを再読み込みしても <button>動的に無効化した状態を維持しますautocomplete 属性の値を off にすると、この機能が無効になります。バグ 654072 をご覧ください。

Android 版 Firefox のバージョン 35 未満では、すべてのボタンにデフォルトでグラデーションの background-image を設定していました (バグ 763671 をご覧ください)。これは background-image: none を使用して無効化できます。

関連情報

フォーム作成に用いるその他の要素: <form>, <datalist>, <fieldset>, <input>,<keygen>, <label>, <legend>, <meter>, <optgroup>, <option>, <output>, <progress>, <select>, <textarea>

ドキュメントのタグと貢献者

 このページの貢献者: yyss, ethertank
 最終更新者: yyss,