HTMLのinputタイプ一覧【type属性完全解説】

HTML inputタグのtype属性一覧を初心者向けに解説。text・email・password・number・checkbox・radio・dateなど全タイプの使い方をコード例で紹介。中高生向け。無料。

2026年4月16日

HTML input type とは?

HTMLの <input> タグは、type 属性を変えることでさまざまな種類の入力欄を作れます。HTML input type の一覧を覚えると、フォームの作り方の幅が大きく広がります。

たとえば、type="text" では1行のテキスト入力欄、type="email" ではメールアドレス専用の入力欄(形式チェック付き)、type="date" ではカレンダーで日付を選べる入力欄が作れます。

この記事では、よく使うinputタイプをコード例とともに解説します。HTMLのフォームの基礎がまだ不安な人はHTMLフォームの作り方を先に読んでおきましょう。

テキスト系のinputタイプ

文字や文章を入力するタイプです。一番よく使います。

<!-- 1行テキスト入力 -->
<input type="text" placeholder="名前を入力" name="name">

<!-- メールアドレス(@が含まれているか自動チェックあり) -->
<input type="email" placeholder="example@mail.com" name="email">

<!-- パスワード(入力した文字が●で隠れる) -->
<input type="password" placeholder="パスワード" name="password">

<!-- 電話番号 -->
<input type="tel" placeholder="090-0000-0000" name="tel">

<!-- URL(https://で始まるか自動チェックあり) -->
<input type="url" placeholder="https://example.com" name="url">

<!-- 検索ボックス(×ボタンで入力クリアができる) -->
<input type="search" placeholder="検索...">

💡 各タイプの自動バリデーションについて

type="email" は「@が含まれているか」、type="url" は「https://で始まるか」を自動でチェックします。フォームの送信時に入力値が正しくなければエラーメッセージが表示されます。

💡 HTMLレッスン1で基礎を確認できます。

数値・範囲のinputタイプ

数値やスライダーで入力するタイプです。年齢や点数の入力、音量調節などに使います。

<!-- 数値入力(min/max/stepで範囲指定) -->
<input type="number" min="0" max="100" step="1" value="50">

<!-- スライダー(バーを動かして値を入力) -->
<label for="volume">音量:</label>
<input type="range" id="volume" min="0" max="100" value="50">
  • min:入力できる最小値
  • max:入力できる最大値
  • step:増減のステップ幅(step="5" なら0, 5, 10, 15...と変化)

🔗 あわせてdivとspanの違いもチェックしてみましょう。

選択系のinputタイプ

選択肢の中から選ぶタイプです。アンケートや設定画面でよく使います。

<!-- チェックボックス(複数選択可) -->
<p>好きな言語を選んでください(複数選択可)</p>
<input type="checkbox" id="html" name="lang" value="html">
<label for="html">HTML</label>

<input type="checkbox" id="css" name="lang" value="css">
<label for="css">CSS</label>

<input type="checkbox" id="js" name="lang" value="js">
<label for="js">JavaScript</label>

<!-- ラジオボタン(1つだけ選択) -->
<p>学年を選んでください(1つだけ)</p>
<input type="radio" id="grade1" name="grade" value="1">
<label for="grade1">1年生</label>

<input type="radio" id="grade2" name="grade" value="2">
<label for="grade2">2年生</label>

<input type="radio" id="grade3" name="grade" value="3">
<label for="grade3">3年生</label>

💡 checkboxとradioの違い

checkbox(チェックボックス)は複数選択できます。「好きな食べ物を全部選んでください」のような質問に使います。
radio(ラジオボタン)は同じ name の中から1つだけ選べます。「性別」「学年」など1つだけ選ぶ質問に使います。

日付・時刻のinputタイプ

日付や時刻を選ぶタイプです。ブラウザが自動でカレンダーや時刻ピッカーを表示してくれます。

<!-- 日付(カレンダーから選択できる) -->
<input type="date" min="2026-01-01" max="2026-12-31">

<!-- 時刻 -->
<input type="time">

<!-- 日時(日付と時刻を両方選択) -->
<input type="datetime-local">

<!-- 月(年と月だけ選択) -->
<input type="month">

<!-- 週(年と週番号で選択) -->
<input type="week">

minmax で選べる日付の範囲を制限できます。例えば min="2026-01-01" max="2026-12-31" と書けば、2026年の日付しか選べなくなります。

📖 詳しくはブロック要素とインライン要素で解説しています。

その他のinputタイプ

ファイル選択や色選択など、特殊な入力に使うタイプです。

<!-- ファイル選択(複数ファイルも可) -->
<input type="file" accept="image/*">           <!-- 画像ファイルのみ -->
<input type="file" accept=".pdf,.docx" multiple>  <!-- PDFかdocxで複数可 -->

<!-- 色選択(カラーピッカーが開く) -->
<input type="color" value="#0d9488">

<!-- 非表示フィールド(ユーザーには見えないがデータを送れる) -->
<input type="hidden" name="userId" value="12345">

<!-- 送信ボタン -->
<input type="submit" value="送信する">

<!-- リセットボタン(フォームを初期状態に戻す) -->
<input type="reset" value="入力をリセット">

バリデーション属性で入力チェックをする

バリデーション(validation)とは、入力値が正しい形式かチェックすることです。HTMLには、JavaScriptを書かなくてもできるバリデーション属性があります。

<!-- required: 入力必須にする -->
<input type="text" required placeholder="必須入力">

<!-- minlength/maxlength: 文字数制限 -->
<input type="text" minlength="3" maxlength="20" placeholder="3〜20文字">

<!-- pattern: 入力パターンを正規表現で指定 -->
<!-- 半角数字4桁だけ受け付ける -->
<input type="text" pattern="[0-9]{4}" title="半角数字4桁で入力してください">

<!-- min/max: 数値や日付の範囲を制限 -->
<input type="number" min="0" max="100" step="5">

<!-- autocomplete: ブラウザの自動補完をOFF -->
<input type="password" autocomplete="new-password">

これらの属性を使うと、フォームの送信時に自動でチェックが行われます。正しくない値が入力されていると、エラーメッセージが表示されて送信できません。

labelとfieldsetでアクセシビリティを高める

アクセシビリティ(accessibility)とは「誰でも使いやすいこと」です。目が不自由な方が使うスクリーンリーダー(読み上げソフト)にも対応した、正しいフォームの作り方を覚えましょう。

<!-- labelのfor属性とinputのid属性を一致させる -->
<label for="username">ユーザー名:</label>
<input type="text" id="username" name="username">

<!-- labelをクリックするとinputにフォーカスが当たる →  操作がしやすくなる -->
<!-- スクリーンリーダーが「ユーザー名」と読み上げてくれる → アクセシビリティ向上 -->

<!-- fieldset/legendで関連する入力をグループ化 -->
<fieldset>
  <legend>お届け先住所</legend>
  <label for="zip">郵便番号:</label>
  <input type="text" id="zip" name="zip">

  <label for="address">住所:</label>
  <input type="text" id="address" name="address">
</fieldset>

labelを必ずつける理由

すべての <input> には <label> を対応させましょう。labelのメリットは2つあります。

  • スクリーンリーダーがラベルの内容を読み上げてくれる
  • ラベルをクリックすると対応するinputにフォーカスが当たる(操作しやすくなる)

fieldsetとlegendでグループ化する

関連する複数の入力欄は <fieldset> でまとめ、<legend> でグループ名をつけます。フォームの構造がわかりやすくなります。

実際に書いてみよう:プロフィール登録フォーム

複数のinputタイプを組み合わせた、実践的なフォームを作ってみましょう。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>プロフィール登録フォーム</title>
    <style>
      form {
        max-width: 400px;
        margin: 0 auto;
        padding: 24px;
        border: 1px solid #ccc;
        border-radius: 8px;
      }
      label {
        display: block;
        margin-top: 16px;
        font-weight: bold;
      }
      input, select {
        width: 100%;
        padding: 8px;
        margin-top: 4px;
        border: 1px solid #ccc;
        border-radius: 4px;
        box-sizing: border-box;
      }
      button {
        margin-top: 24px;
        padding: 12px 24px;
        background-color: #0d9488;
        color: white;
        border: none;
        border-radius: 4px;
        cursor: pointer;
        width: 100%;
      }
    </style>
  </head>
  <body>
    <form id="profileForm">
      <h2>プロフィール登録</h2>

      <label for="name">名前(必須):</label>
      <input type="text" id="name" name="name" required placeholder="田中 太郎">

      <label for="email">メールアドレス:</label>
      <input type="email" id="email" name="email" placeholder="example@mail.com">

      <label for="birthday">生年月日:</label>
      <input type="date" id="birthday" name="birthday">

      <label>好きなプログラミング言語(複数選択可):</label>
      <input type="checkbox" id="html" name="lang" value="html">
      <label for="html" style="display:inline; font-weight:normal;">HTML</label>
      <input type="checkbox" id="css" name="lang" value="css">
      <label for="css" style="display:inline; font-weight:normal;">CSS</label>
      <input type="checkbox" id="js" name="lang" value="js">
      <label for="js" style="display:inline; font-weight:normal;">JavaScript</label>

      <button type="submit">登録する</button>
    </form>

    <script>
      document.getElementById("profileForm").addEventListener("submit", (e) => {
        e.preventDefault();
        const name = document.getElementById("name").value;
        alert(name + "さんの登録が完了しました!");
      });
    </script>
  </body>
</html>

このコードをHTMLファイルとして保存してブラウザで確認しましょう。名前を入力して「登録する」ボタンを押すと、アラートが表示されます。

まとめ

  • type="text"emailpassword:テキスト入力系
  • type="number"range:数値・スライダー
  • type="checkbox":複数選択、type="radio":1つだけ選択
  • type="date"time:日付・時刻の入力
  • type="file":ファイル選択、type="color":色選択
  • requiredminmaxpattern:バリデーション属性
  • <label> を必ずつけてアクセシビリティを高める

HTMLの基礎はHTML入門で復習できます。JavaScriptでフォーム値を取得する方法はDOM操作入門を参照してください。

あわせて読みたい記事

🎯 次のステップ

input typesを覚えたら、JavaScriptでフォームの値を処理してみよう!完全無料・登録不要。

JavaScript DOM操作入門へ →
目次

コースで実際に手を動かして学ぼう

レッスンではコードを書きながら基礎が身につきます

HTMLコースを始める →

この記事に出てくる用語

📣 この記事が役に立ったら

Xでシェア

💬 引用する場合はこちらをご利用ください:

HTML inputタグのtype属性一覧を初心者向けに解説。text・email・password・number・checkbox・radio・dateなど全タイプの使い方をコード例で紹介。中高生向け。無料。

出典: https://start-web-programming.com/blog/html-input-types/