メインコンテンツへスキップ

フォームコントロール(Form control)

複数の状態をサポートするテキスト入力およびテキストエリアをスタイル。

基本の設定(Example)v5.0.0-alpha1設定変更

見本
Bootstrap5.xの設定例 緑背景が変更箇所
<div class="mb-3">
  <label for="exampleFormControlInput1" class="form-label">Eメールアドレス</label>
  <input type="email" class="form-control" id="exampleFormControlInput1" placeholder="name@example.com">
</div>
<div class="mb-3">
  <label for="exampleFormControlTextarea1" class="form-label">テキストエリアの例</label>
  <textarea class="form-control" id="exampleFormControlTextarea1" rows="3"></textarea>
</div>
※Bootstrap4.xの設定例 赤背景が変更箇所
<div class="form-group">
  <label for="exampleFormControlInput1">Eメールアドレス</label>
  <input type="email" class="form-control" id="exampleFormControlInput1" placeholder="name@example.com">
</div>
<div class="form-group">
  <label for="exampleFormControlTextarea1">テキストエリアの例</label>
  <textarea class="form-control" id="exampleFormControlTextarea1" rows="3"></textarea>
</div>
【設定】
  • div.mb-3 > [label.form-label《ラベル》 + input.form-control《コントロール》]
  • div.mb-3 > [label.form-label《ラベル》 + textarea.form-control《テキストエリア》]
  • textarea.form-control《テキストエリア》の高さは、rows 属性の数値で調整(横幅の cols 属性は無効)
アクセシビリティの設定】
  • label.form-labelfor 属性の値と、input.form-control(または textarea.form-control)の id 属性の値を同じにしてラベルとコントロールを関連付ける
  • コントロールをラベルなしで使用する場合は、ラベルテキストの代替として input.form-controlaria-label 属性(要素に対してラベル付けを行う)を入れる
    placeholder 属性はまだアクセシビリティな名前を提供する有効な方法として公式かつ一貫してサポートされていないため
【変更履歴】
  • 【v5.0.0-alpha1】
    • .form-group は下側のマージン設定だけになるので廃止(下側のマージンが必要なら .mb-* を設定する)
    • <label>.form-label を入れる

 

コントロールのサイズ(Sizing)

.form-control-lg.form-control-sm のようなクラスを使って高さを設定。

サイズの種類

●大きめ:.form-control-lg

●小さめ:.form-control-sm

※デフォルト(参考)

設定例
大きめ<input type="text" class="form-control form-control-lg" placeholder="..." aria-label="大きめのコントロールの例">
小さめ<input type="text" class="form-control form-control-sm" placeholder="..." aria-label="小さめのコントロールの例">
【設定】
  • .form-control.form-control-{size}(上記の「サイズの種類」から選択)を追加

 

無効化(Disabled)v5.0.0-alpha3設定追加、v5.0.2一部設定変更

入力コントロールに disabled ブール属性を追加してグレー表示にし、ポインタイベントを削除。

見本
設定例
<input type="text" class="form-control" placeholder="無効化した入力コントロール" aria-label="無効化した入力コントロールの例" disabled>
<input type="text" class="form-control" value="無効化した読み取り専用入力コントロール" aria-label="無効化した読み取り専用入力コントロールの例" disabled readonly>
【設定】
  • 無効化したい入力コントロール(.form-control)に [disabled] を追加
【変更履歴】
  • 【v5.0.2】
    • 読み取り専用 [readonly] にテキストを入れる場合は、[placeholder] ではなく[value] で設定

 

読み取り専用コントロール(Readonly)v5.0.2設定変更

入力コントロールに readonly ブール値属性を追加して、入力値の変更を防止する。読み取り専用入力コントロールは、(無効状態の入力と同じように)軽めに表示されるが、カーソルはデフォルトのまま保持される(フォーカスもできる)。

見本
設定例
<input type="text" class="form-control" value="ここは読み取り専用..." aria-label="読み取り専用コントロールの例" readonly>
【設定】
  • <input>readonly 属性を入れる
【変更履歴】
  • 【v5.0.2】
    • テキストを入れる場合は、[placeholder] ではなく、[value] で設定

 

読み取り専用プレーンテキスト(Readonly plain text)

フォームの <input readonly> 要素をプレーンテキストのスタイルにしたい場合は、.form-control-plaintext クラスを使用して、デフォルトのフォームフィールドスタイルを削除し、正しいマージンとパディングを保持。

1. 水平フォーム

見本
設定例
<div class="mb-3 row">
  <label for="staticEmail" class="col-sm-2 col-form-label">Eメール</label>
  <div class="col-sm-10">
    <input type="text" readonly class="form-control-plaintext" id="staticEmail" value="email@example.com">
  </div>
</div>
<div class="mb-3 row">
  <label for="Password" class="col-sm-2 col-form-label">パスワード</label>
  <div class="col-sm-10">
    <input type="password" class="form-control" id="Password" placeholder="パスワード">
  </div>
</div>

2. 横並びフォーム v5.0.0-alpha2設定変更

見本
Bootstrap5.xの設定例 緑背景が変更箇所
<form class="row g-3">
  <div class="col-auto">
    <label for="staticEmail2" class="visually-hidden">Eメール</label>
    <input type="text" class="form-control-plaintext" id="staticEmail2" readonly value="email@example.com">
  </div>
  <div class="col-auto">
    <label for="inputPassword2" class="visually-hidden">パスワード</label>
    <input type="password" class="form-control" id="inputPassword2" placeholder="パスワード">
  </div>
  <div class="col-auto">
    <button type="submit" class="btn btn-primary mb-3">同一性を確認</button>
  </div>
</form>
※Bootstrap4.xの設定例 赤背景が変更箇所
<form class="form-inline">
  <div class="mb-3">
    <label for="staticEmail2" class="sr-only">Eメール</label>
    <input type="text" readonly class="form-control-plaintext" id="staticEmail2" value="email@example.com">
  </div>
  <div class="mx-sm-3 mb-3">
    <label for="inputPassword2" class="sr-only">パスワード</label>
    <input type="password" class="form-control" id="inputPassword2" placeholder="パスワード">
  </div>
  <button type="submit" class="btn btn-primary mb-3">同一性を確認</button>
</form>
【設定】
  • input.form-control の代わりに input[readonly].form-control-plaintext を入れる
  • 入れるテキストは、[value] で設定
【変更履歴】
  • 【v5.0.0-alpha1】
  • 【v5.0.0-alpha2】
    • label.sr-onlylabel.visually-hidden

 

ファイル選択(File input)v5.0.0-alpha3設定変更、独立した項目より移動

見本
Bootstrap5.0.0-alpha3~の設定例 緑背景が変更箇所
デフォルトのファイル選択<div class="mb-3">
  <label for="formFile" class="form-label">デフォルトのファイル選択の例</label>
  <input type="file" class="form-control" id="formFile">
</div>
複数ファイル選択<div class="mb-3">
  <label for="formFileMultiple" class="form-label">複数ファイル選択の例</label>
  <input type="file" class="form-control" id="formFileMultiple" multiple>
</div>
無効なファイル選択<div class="mb-3">
  <label for="formFileDisabled" class="form-label">無効なファイル選択の例</label>
  <input type="file" class="form-control" id="formFileDisabled" disabled>
</div>
小さめのファイル選択<div class="mb-3">
  <label for="formFileSm" class="form-label">小さめのファイル選択の例</label>
  <input type="file" class="form-control form-control-sm" id="formFileSm">
</div>
大きめのファイル選択<div>
  <label for="formFileLg" class="form-label">大きめのファイル選択の例</label>
  <input type="file" class="form-control form-control-lg" id="formFileLg">
</div>
※Bootstrap5.0.0-alpha2の設定例 赤背景が変更箇所
デフォルトのファイル選択<div class="form-file">
  <input type="file" class="form-file-input" id="formFile">
  <label for="formFile" class="form-file-label">
    <span class="form-file-text">ファイル選択...</span>
    <span class="form-file-button">参照</span>
  </label>
</div>
無効なファイル選択<div class="form-file">
  <input type="file" class="form-file-input" id="formFileDisabled" disabled>
  <label for="formFileDisabled" class="form-file-label">
    <span class="form-file-text">ファイル選択...</span>
    <span class="form-file-button">参照</span>
  </label>
</div>
小さめのファイル選択<div class="form-file form-file-sm">
  <input type="file" class="form-file-input" id="formFileSm">
  <label for="formFileSm" class="form-file-label">
    <span class="form-file-text">ファイル選択...</span>
    <span class="form-file-button">参照</span>
  </label>
</div>
大きめのファイル選択<div class="form-file form-file-lg">
  <input type="file" class="form-file-input" id="customFileLg">
  <label for="customFileLg" class="form-file-label">
    <span class="form-file-text">ファイル選択...</span>
    <span class="form-file-button">参照</span>
  </label>
</div>
※Bootstrap4.xの設定例 赤背景が変更箇所
カスタム・ファイル選択<div class="custom-file">
  <input type="file" class="custom-file-input" id="formFile">
  <label for="formFile" class="custom-file-label" data-browse="参照">ファイル選択...</label>
</div>
【設定】
  • input[type="file].form-control の場合は、ファイル選択のスタイルになる
  • 複数ファイル選択にするときは、<input>multiple 属性を入れる
【注意】
  • 選択ボタンや入力フィールド内の表示は閲覧するブラウザに準ずる
【変更履歴】
  • 【v5.0.0-alpha1】
    • .custom-file.form-file
    • .custom-file-label.form-file-label
    • .custom-file-input.form-file-input
    • label.form-file-label 内に span.form-file-textspan.form-file-button を設定する必要あり
    • 文字列を翻訳するためのSCSSやHTML([data-browse])のカスタマイズは不要に
    • .form-file.form-file-{sm|lg}(小さめと大きめのファイル選択)が追加
  • 【v5.0.0-alpha3】
    • div.form-filediv.mb-3
    • label.form-file-labellabel.form-label
    • input.form-file-inputinput.form-control
    • コントロールとラベルの順番が逆になる(ラベルが先)
    • 小さめと大きめのファイル選択:div.form-file.form-file-{sm|lg} > input.form-file-inputdiv.mb-3 > input.form-control.form-control-{sm|lg}

 

カラーピッカーの設定(Color)v5.0.0-alpha1新設

見本
設定例
<label for="exampleColorInput" class="form-label">カラーピッカー</label>
<input type="color" class="form-control form-control-color" id="exampleColorInput" value="#563d7c" title="色を選択してください">
【設定】
  • input[type="color"].form-control.form-control-color を追加(コントロールの幅が100%で表示されることを回避)
  • 表示する color(16進数表記でRGBカラーを特定)は value に設定
アクセシビリティの設定】
  • label.form-labelfor 属性の値と、input.form-control.form-control-colorid 属性の値を同じにしてラベルとコントロールを関連付ける

 

データリスト(Datalists)v5.0.0-alpha1新設

データリストを使うと、<input> の中からアクセス(と自動補完)できる <option> のグループの作成ができる。これらは <select> 要素に似ているが、より多くのメニュースタイルの制限と違いがある。ほとんどのブラウザやオペレーティングシステムは <datalist> 要素をある程度サポートしているが、スタイルは随分矛盾している。

詳細はデータリスト要素のサポートについて(Can I use)に記載。

見本
設定例
<label for="exampleDataList" class="form-label">データリストの例</label>
<input class="form-control" list="datalistOptions" id="exampleDataList" placeholder="検索するタイプ...">
<datalist id="datalistOptions">
  <option value="サンフランシスコ">
  <option value="ニューヨーク">
  <option value="シアトル">
  <option value="ロサンゼルス">
  <option value="シカゴ">
</datalist>
【設定】
  • input.form-control でも <datalist> に対応
アクセシビリティの設定】
  • label.form-labelfor 属性の値と、input.form-controlid 属性の値を同じにしてラベルとコントロールを関連付ける
  • input.form-controllist 属性の値と、<datalist>id 属性の値を同じにしてインプットとデータリストを関連付ける

 

Sass v5.0.0-beta3追加

変数(Variables)

$input-* は、ほとんどのフォームコントロールで共有される(ボタンではない)。

デフォルトの設定
scss/_variables.scss 内 form-input-variables の設定$input-padding-y:                       $input-btn-padding-y;
$input-padding-x:                       $input-btn-padding-x;
$input-font-family:                     $input-btn-font-family;
$input-font-size:                       $input-btn-font-size;
$input-font-weight:                     $font-weight-base;
$input-line-height:                     $input-btn-line-height;

$input-padding-y-sm:                    $input-btn-padding-y-sm;
$input-padding-x-sm:                    $input-btn-padding-x-sm;
$input-font-size-sm:                    $input-btn-font-size-sm;

$input-padding-y-lg:                    $input-btn-padding-y-lg;
$input-padding-x-lg:                    $input-btn-padding-x-lg;
$input-font-size-lg:                    $input-btn-font-size-lg;

$input-bg:                              $body-bg;
$input-disabled-bg:                     $gray-200;
$input-disabled-border-color:           null;

$input-color:                           $body-color;
$input-border-color:                    $gray-400;
$input-border-width:                    $input-btn-border-width;
$input-box-shadow:                      $box-shadow-inset;

$input-border-radius:                   $border-radius;
$input-border-radius-sm:                $border-radius-sm;
$input-border-radius-lg:                $border-radius-lg;

$input-focus-bg:                        $input-bg;
$input-focus-border-color:              tint-color($component-active-bg, 50%);
$input-focus-color:                     $input-color;
$input-focus-width:                     $input-btn-focus-width;
$input-focus-box-shadow:                $input-btn-focus-box-shadow;

$input-placeholder-color:               $gray-600;
$input-plaintext-color:                 $body-color;

$input-height-border:                   $input-border-width * 2;

$input-height-inner:                    add($input-line-height * 1em, $input-padding-y * 2);
$input-height-inner-half:               add($input-line-height * .5em, $input-padding-y);
$input-height-inner-quarter:            add($input-line-height * .25em, $input-padding-y / 2);

$input-height:                          add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false));
$input-height-sm:                       add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false));
$input-height-lg:                       add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false));

$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out;

$form-color-width:                      3rem;

$form-label-*$form-text-* は、<label>.form-text コンポーネント用。

scss/_variables.scss 内 form-label-variables の設定$form-label-margin-bottom:              .5rem;
$form-label-font-size:                  null;
$form-label-font-style:                 null;
$form-label-font-weight:                null;
$form-label-color:                      null;
scss/_variables.scss 内 form-text-variables の設定$form-text-margin-top:                  .25rem;
$form-text-font-size:                   $small-font-size;
$form-text-font-style:                  null;
$form-text-font-weight:                 null;
$form-text-color:                       $text-muted;

$form-file-* はファイル選択用。

scss/_variables.scss 内 form-file-variables の設定$form-file-button-color:          $input-color;
$form-file-button-bg:             $input-group-addon-bg;
$form-file-button-hover-bg:       shade-color($form-file-button-bg, 5%);