ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
HTML フォーム要素とは
HTML フォーム要素は、ユーザーから情報を入力してもらってサーバーに送信したり、JavaScript で処理したりするための一連の要素群です。ログイン画面、検索ボックス、会員登録フォーム、アンケートなど、Web の双方向性を支える基本機能です。
主要要素の一覧
| 要素 | 役割 |
|---|---|
form | フォーム全体のコンテナ。送信先 (action) と送信方法 (method) を指定 |
input | 1 行入力。type 属性で種類を切り替え (text / email / checkbox / radio など) |
textarea | 複数行のテキスト入力 |
select / option | ドロップダウン / リストボックス |
button | 送信 / リセット / 汎用ボタン |
label | 入力欄のラベル。for 属性または入れ子で関連付け |
fieldset / legend | 関連項目をグループ化、見出しを付ける |
datalist | input の入力候補を提供 |
output | 計算結果の表示 |
progress / meter | 進捗 / 割合の表示 |
基本的なフォームの構造
<form action="/submit" method="post">
<fieldset>
<legend>会員登録</legend>
<p>
<label for="name">氏名</label>
<input type="text" id="name" name="name" required>
</p>
<p>
<label for="email">メールアドレス</label>
<input type="email" id="email" name="email" required>
</p>
<p>
<label for="pw">パスワード</label>
<input type="password" id="pw" name="password"
minlength="8" required>
</p>
<p>
<label>
<input type="checkbox" name="agree" required>
利用規約に同意する
</label>
</p>
<button type="submit">登録する</button>
</fieldset>
</form>
input 要素の type 属性
HTML5 で type 属性が大幅に拡張され、専用 UI とバリデーションが組み込まれた便利な入力欄が使えるようになりました。
| type | 用途 | UI / 検証 |
|---|---|---|
text | 1 行テキスト (デフォルト) | - |
email | メールアドレス | 形式チェック、モバイルで @ キー |
tel | 電話番号 | モバイルで数字キーパッド |
url | URL | 形式チェック |
number | 数値 | スピンボタン、min/max/step |
password | パスワード (マスク) | 文字を ● |
date / time / datetime-local | 日時 | カレンダー / 時計 UI |
color | 色 | カラーピッカー |
range | 範囲スライダー | つまみで値選択 |
file | ファイル選択 | ファイル選択ダイアログ |
checkbox | チェックボックス | 複数選択可 |
radio | ラジオボタン | 同 name で 1 つのみ選択 |
hidden | 非表示の値 | CSRF トークン等 |
submit / reset | 送信 / リセット | ボタンとして表示 |
label を関連付ける
ラベルを関連付けると、ラベルクリックで入力欄にフォーカスでき、スクリーンリーダーが正しく読み上げられます。タップ範囲も広がりモバイル UX が向上します。
<!-- パターン1: for と id で関連付け -->
<label for="user">ユーザー名</label>
<input type="text" id="user" name="user">
<!-- パターン2: 入れ子で関連付け (id 不要) -->
<label>
ユーザー名
<input type="text" name="user">
</label>
select — ドロップダウン
<label for="pref">都道府県</label>
<select id="pref" name="prefecture" required>
<option value="">選択してください</option>
<optgroup label="関東">
<option value="13">東京都</option>
<option value="14">神奈川県</option>
</optgroup>
<optgroup label="関西">
<option value="27">大阪府</option>
<option value="28">兵庫県</option>
</optgroup>
</select>
<!-- 複数選択 (Ctrl/Cmd キーで複数) -->
<select name="hobby" multiple size="5">
<option>読書</option>
<option>映画</option>
<option>旅行</option>
</select>
textarea — 複数行入力
<label for="msg">お問い合わせ内容</label>
<textarea id="msg" name="message"
rows="6" cols="40"
maxlength="500"
placeholder="500 文字以内でご記入ください"
required></textarea>
button — ボタン
input type="submit" よりも button 要素のほうが柔軟 (中身に HTML / アイコンを入れられる) で、現代では推奨されます。
<button type="submit">送信する</button>
<button type="reset">リセット</button>
<button type="button" onclick="doSomething()">処理実行</button>
<!-- アイコン入りボタン -->
<button type="submit">
<svg>...</svg> 検索
</button>
HTML5 バリデーション属性
| 属性 | 意味 |
|---|---|
required | 必須項目 |
minlength / maxlength | 文字数の最小 / 最大 |
min / max | 数値 / 日付の最小 / 最大 |
step | 数値の刻み幅 |
pattern | 正規表現で形式チェック |
placeholder | 入力例のヒント表示 |
autocomplete | 自動入力候補の制御 |
readonly / disabled | 読み取り専用 / 無効化 |
form 要素の主な属性
| 属性 | 意味 |
|---|---|
action | 送信先 URL |
method | get / post |
enctype | 送信形式。ファイル送信時は multipart/form-data |
target | 送信後の表示先 (_blank 等) |
novalidate | HTML5 バリデーションを無効化 |
autocomplete | フォーム全体の自動入力 on/off |
アクセシビリティのポイント
- 入力欄には必ず
labelを付ける (見た目で省略する場合はaria-label) - 関連項目は
fieldset+legendでグループ化 - エラー表示は
aria-invalidやaria-describedbyでスクリーンリーダーへ通知 - placeholder をラベル代わりに使わない — 入力中に消えて何の欄か分からなくなる
- 必須マーク (※) にはテキストも併記するか
requiredで識別可能に
FAQ
Q: GET と POST の違いは?
A: GET は URL にパラメータが付くので検索など冪等な取得に。POST は本文に送るので更新や機密情報に使う。パスワードや個人情報は必ず POST + HTTPS。
Q: form の中に form を入れられる?
A: 不可。form はネスト禁止。複数の独立した送信が必要なら別々の form を並列に配置する。
Q: モダンな React/Vue でも HTML フォーム要素は必要?
A: 必須。フレームワークが描画する DOM もすべて HTML 要素であり、セマンティクスとアクセシビリティの基盤となる。
関連要素
form/input/textarea/select/buttonlabel/fieldset/legenddatalist/output/progress/meter
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 2026-06-22 12:19:10
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?