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

フォームコントロール(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《コントロール》]
  • label[for="ID"].form-label + input#ID.form-controltextarea#ID.form-control)でラベルとコントロールを関連付ける
アクセシビリティの設定】
  • コントロールを単独で使用する場合は、ラベルテキストの代替として 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設定追加

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

見本
設定例
<input class="form-control" type="text" placeholder="無効化した入力コントロール" aria-label="無効化した入力コントロールの例" disabled>
<input class="form-control" type="text" placeholder="無効化した読み取り専用入力コントロール" aria-label="無効化した読み取り専用入力コントロールの例" disabled readonly>
【設定】
  • 無効化したい入力コントロール(.form-control)に [disabled] を追加

 

読み取り専用コントロール(Readonly)

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

見本
設定例
<input class="form-control" type="text" placeholder="ここは読み取り専用..." aria-label="読み取り専用コントロールの例" readonly>
【設定】
  • <input>readonly 属性を入れる

 

読み取り専用プレーンテキスト(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" readonly class="form-control-plaintext" id="staticEmail2" 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 を入れる
【変更履歴】
  • 【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 class="form-control" type="file" id="formFile">
</div>
複数ファイル選択<div class="mb-3">
	<label for="formFileMultiple" class="form-label">複数ファイル選択の例</label>
	<input class="form-control" type="file" id="formFileMultiple" multiple>
</div>
無効なファイル選択<div class="mb-3">
	<label for="formFileDisabled" class="form-label">無効なファイル選択の例</label>
	<input class="form-control" type="file" id="formFileDisabled" disabled>
</div>
小さめのファイル選択<div class="mb-3">
	<label for="formFileSm" class="form-label">小さめのファイル選択の例</label>
	<input class="form-control form-control-sm" id="formFileSm" type="file">
</div>
大きめのファイル選択<div>
	<label for="formFileLg" class="form-label">大きめのファイル選択の例</label>
	<input class="form-control form-control-lg" id="formFileLg" type="file">
</div>
※Bootstrap5.0.0-alpha2の設定例 赤背景が変更箇所
標準のファイル選択<div class="form-file">
	<input type="file" class="form-file-input" id="formFile">
	<label class="form-file-label" for="formFile">
		<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 class="form-file-label" for="formFileDisabled">
		<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 class="form-file-label" for="formFileSm">
		<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 class="form-file-label" for="customFileLg">
		<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 class="custom-file-label" for="formFile" data-browse="参照">ファイル選択...</label>
</div>
【設定】
  • input.form-control[type="file] の場合は、ファイル選択のスタイルになる
  • 複数ファイル選択にするときは、<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%で表示されることを回避)

 

データリスト(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> に対応

 

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:                              $white;
$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-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%);