HTML / Element / Initial coverage

<button>要素

状態: 初期Coverage 対象: HTML Living Standard 確認日: 2026-09-12

Technical Summary

button要素は、その子孫の内容をlabelとするボタンを表します。Flow content、phrasing content、interactive contentに属し、listed・labelable・submittableなform-associated elementでもあります。

typeはenumerated attributeです。submitresetbuttonの状態を選び、値がない場合または無効な値の場合はAuto状態になります。Auto状態は、command / commandforや親要素などの条件とともにsubmit buttonかどうかを決めます。

Definition / Categories

項目仕様上の整理確認点
意味子孫の内容をlabelとするbuttonテキスト・画像・その他のphrasing contentで目的を伝える
Categoryflow、phrasing、interactive、palpableフォーム関連のcategoryは下記のform-associated列で確認する
Form-associatedlisted、labelable、submittable、autocapitalize-and-autocorrect inheritingform owner、送信対象、labelとの関係を分けて扱う
InterfaceHTMLButtonElementtype、form、validity、labelsなどのIDL APIを持つ

Structure / Content model

通常のbuttonのcontent modelはphrasing contentですが、interactive contentの子孫や、tabindex属性を指定した子孫を含められません。ボタンの中に別のボタンやリンクを入れる構造は、意味上の重複した操作対象を作ります。

<!-- 子孫に別の操作対象を入れない -->
<button type="button">
  <span>メニューを開く</span>
</button>

現在のHTML Standardには、selectの最初の子として使われるbuttonとselectedcontentに関する特別な規則もあります。通常のページ上のbuttonと同じ前提で一括りにしないことが重要です。

type状態とsubmit button判定

KeywordState主な処理
submitSubmit Buttonform ownerのform submissionを開始する
resetReset Buttonform ownerをresetする
buttonButton通常のform submit/resetを選ばず、ページ上の操作に使う
省略・無効値Autocommand / commandfor、親がselectかどうか、submit条件と合わせて判定する

仕様上のsubmit button判定は、単純な「typeがないなら常にsubmit」という説明では不十分です。Auto状態でcommandcommandforがなく、親がselectでない場合など、条件を合わせて確認します。

Activation behavior

buttonのactivation behaviorは、まずdisabled状態とdocumentのactive状態を確認します。form ownerがある場合、submit buttonならformをsubmitし、Reset Buttonならformをresetします。Auto状態で処理が残る場合は、commandforの対象とcommandに関する処理へ進みます。

if button is disabled:
    return
if button has a form owner:
    if button is a submit button:
        submit the form
        return
    if button is in the Reset Button state:
        reset the form
        return
process commandfor / command or popover targeting

このモデルでは、すべてのbuttonを「クリックイベントにJavaScriptを付けるだけの要素」として扱いません。フォーム、disabled、command、popoverなどがactivationの分岐になります。

Form association / Submission

form属性はbuttonとform ownerを明示的に関連付けます。nameはフォーム送信とform.elements APIで使う名前を表し、valueは送信時の値を表します。ただし、buttonとそのvalueは、そのbutton自身が送信を開始した場合にだけform submissionへ含まれます。

属性適用範囲境界
formform ownerの明示的な関連付けbuttonをformの外に置く構造と関係する
formaction / formmethod送信先URL・methodの上書きsubmit buttonでない場合は指定しない
formnovalidateそのsubmit操作でconstraint validationを回避フォーム全体の検証仕様とは別に扱う
disabledコントロールを非対話化し、valueの送信を防ぐ見た目の無効化だけでなくactivationと送信に影響する

Commands / Popover boundary

button要素はcommandを定義できます。commandforで同じtree内の対象要素を指定し、commandでpopoverの表示・非表示やdialogのcloseなど、仕様で定義された操作を選べます。--で始まるcustom commandは、対象要素へcommand eventを配送するための拡張点です。

<button type="button"
        commandfor="help-popover"
        command="show-popover">
  ヘルプを表示
</button>
<div id="help-popover" popover>ヘルプ本文</div>

この領域はbutton単体の説明だけで完結せず、popover、dialog、CommandEvent、target側のcommand stepsとのCross-Spec関係を含みます。

DOM Interface

button要素はHTMLButtonElementとして公開されます。typedisabledformnamevalueに加え、willValidatevalidityvalidationMessagecheckValidity()reportValidity()setCustomValidity()labelsなどが関係します。

const button = document.querySelector('button');
button.type;
button.form;
button.disabled;
button.labels;
button.checkValidity();

Fact / Evidence(主張 / 根拠)

主要Factを、適用条件・確認状態・仕様上の根拠位置と対応付けています。未完了の範囲は下のCoverage / Open Issuesに残しています。

主要Factと根拠位置
種別Fact / 主張条件・範囲状態根拠
SPECbuttonは子孫の内容をlabelとするbuttonを表します。HTMLのbutton elementとして処理される場合。確認済みHTML Standard: the button element
SPECtypeはsubmit、reset、buttonの状態を選び、省略・無効値はAuto状態になります。typeがenumerated attributeとして評価される場合。確認済みHTML Standard: type states
SPECbuttonのcontent modelではinteractive contentの子孫を許可しません。通常のbutton content model。select内の特別な分岐は別途考慮。確認済みHTML Standard: content model
SPECdisabledなbuttonのactivationは停止し、submit/resetはform ownerとtype状態に応じて分岐します。activation behaviorが実行される場合。確認済みHTML Standard: button activation behavior
SPECbuttonのvalueは、そのbuttonが送信を開始した場合にform submissionへ含まれます。buttonにform ownerがあり、そのbuttonがsubmitterである場合。確認済みHTML Standard: value and form submission
SPECcommand / commandforはpopoverやdialogなどのtargetに対するcommand処理と関係します。対象要素、command state、target側のcommand stepsが適用される場合。確認済みHTML Standard: button commands

Evidence

  1. HTML Standard: The button element — categories、content model、type、form attributes、activation behavior、DOM interface
  2. HTML Standard: Using the button element to define a command — commandのlabel、disabled state、action
  3. HTML Standard: Implicit submission — formのdefault buttonと暗黙送信
  4. HTML Standard: Form submission algorithm — submitterとform submissionの処理境界

Implementation Evidence

仕様上の主張とは別に、ブラウザー実装・WPT・アクセシビリティ観測を記録します。未実施の項目は確認済みとは扱いません。

共通fixture / 記録: <form id="evidence-form" method="get">内に、type省略のinputfor/idによる明示関連、labelinputの暗黙関連、requireddisabledsubmitとtype省略のbuttonを配置しました。環境: Chrome 152.0.0.0(Windows NT 10.0) / 確認日 2026-09-12。

button要素の実装Evidence登録表
種別再現確認の範囲記録する条件状態
IMPLtypeの既定値、form owner、disabled state共通fixtureをChrome 152.0.0.0 / Windows NT 10.0で確認。type="submit"とtype省略のbuttonはともにsubmit、submit buttonのform ownerはevidence-form、disabled buttonは:disabledに一致しました。確認済み(Chrome 1台)
WPTbutton state、validation、activation、eventsに関係するテストとの対応対応候補: button-type.htmlbutton-labels.htmlbutton-validation.htmlbutton-events.html。2026-09-15 / Chrome 152.0.0.0 / Windows NT 10.0 / wpt.liveで4件を実行し18/18 pass。選定外のWPTと他ブラウザーは未評価部分実行(18/18 pass)
AAMbutton role、accessible name、disabled stateのブラウザーAX観測同じfixtureのAccessibility treeで、SaveとDefault submitがbutton roleと名前付きで表示され、Disabled saveはdisabled状態で表示されました。観測済み(Chrome AX)

WPTの対応付けにはWPTリポジトリ、アクセシビリティの基準にはHTML-AAMを参照します。

Coverage / Open Issues

  • 確認済みbuttonの意味、category、content model、type状態、基本的なactivation、form association、主要DOM API
  • 確認済みcommand / commandforとpopover・dialogに関する仕様上の入口
  • 未完了form submission algorithm全体、successful controls、entry list、implicit submissionの全分岐
  • 未完了HTML-AAM、platform accessibility mapping、支援技術ごとの観測
  • 未完了ブラウザー別実装結果、WPT、歴史的変更、互換性データ、Expert-gap Review

このページは初期Coverageです。確認済みの範囲を示すものであり、button要素全体の検証完了や、すべての実装差の解消を主張しません。

Related surface

初心者向けのtypeの選び方、フォーム例、リンクとの使い分けはYugienのbutton要素ページを参照してください。dialogを開閉するbuttonとの関係はAtlasのdialog要素、リンクの条件とactivation behaviorはAtlasのa要素、フォームコントロールのtype状態はAtlasのinput要素で確認できます。