<div class="form-group"> ... </div>
でグループ化します。type
属性が必須です。<label>
を必ず記述してください。<label>
の for
属性に記述した値と同じものを、フォーム要素の id
として指定しています。aria-describedby
を加えて、 値と同じ名前の id
を説明文に加えます。type
属性を変えることで様々な情報を入力できるようになります。
<div class="form-group">
<label for="exampleInputEmail1">メールアドレス</label>
<input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp">
<small id="emailHelp" class="form-text text-muted">メールをはじめとした個人情報は第三者へは公開しません。</small>
</div>
// URL
<label for="exampleInputURL">URL</label>
<input type="url" class="form-control" id="exampleInputURL" value="https://www.sixapart.jp/">
// TEL
<label for="exampleInputTEL">TEL</label>
<input type="tel" class="form-control" id="exampleInputTEL" value="03-000-0000">
// パスワード
<label for="exampleInputPassword">パスワード</label>
<input type="password" class="form-control" id="exampleInputPassword" value="mt7forall">
// 数字
<label for="exampleInputNumber">数字</label>
<input type="number" class="form-control" id="exampleInputNumber" value="4">
// 日時
<label for="exampleInputDateTime">日時</label>
<input type="datetime-local" class="form-control" id="exampleInputDateTime" value="2017-10-12T13:45:00">
// 日付
<label for="exampleInputDate">日付</label>
<input type="date" class="form-control" id="exampleInputDate" value="2017-10-12">
// 時間
<label for="exampleInputTime">時間</label>
<input type="time" class="form-control" id="exampleInputTime" value="13:45:00">
テキストフィールドは 10%, 25%, 50%, 75%, 100% の横幅を設定することができます。
<input type="text" class="form-control w-10">
<input type="text" class="form-control w-25">
<input type="text" class="form-control w-50">
<input type="text" class="form-control w-75">
<input type="text" class="form-control w-100">
<select class="custom-select form-control">
<option selected>選択してください</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<div class="form-group">
<label for="exampleFormControlSelect2">複数選択の例</label>
<select multiple class="form-control" id="exampleFormControlSelect2">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
</div>
要素の記入ミスやエラーが発生した場合は .is-invalid
。ユーザーに正しく記入したことを伝えたい場合は .is-valid
を記述します。
<div class="form-group">
<label for="exampleInputEmailError">メールアドレス</label>
<input type="text" class="form-control is-invalid" id="exampleInputEmailError">
<div class="invalid-feedback">@ マークがあるメールアドレスを記入してください。</div>
</div>
編集をクリックすると、インプットフィールドが表示される UI。
※ 実装はプロダクト側の JavaScript で行います。
readonly
と記述し、form-control
を form-control-plaintext
に切り替えてください。<label>
ではスタイリングされていない、右余白を確保するために .mr-sm-3
を記述してください。<div class="form-inline">
<label for="exampleInputEditableURL" class="mr-sm-3">サイトURL</label>
<input type="text" class="form-control-plaintext w-50" id="exampleInputEditableURL" value="/usr/local/var/www/home" readonly>
<button type="button" class="btn btn-link">編集</button>
</div>
<div class="form-inline">
<label for="exampleInputEditableURL2" class="mr-sm-3">サイトURL</label>
<input type="text" class="form-control w-50" id="exampleInputEditableURL2">
<button type="button" class="btn btn-link">完了</button>
</div>
.custom-control
が記述されたコンテナを用意します。入れ子の HTML 構造は通常と同じになります。
// チェックボックス
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="customCheck1">
<label class="custom-control-label" for="customCheck1">チェックボックスアイテム</label>
</div>
// ラジオボタン
<div class="custom-control custom-radio">
<input id="radio1" name="radio" type="radio" class="custom-control-input">
<label class="custom-control-label" for="radio1">ラジオボタン 1</label>
</div>
ON/OFF を操作するスイッチボタンは、チェックボックスに.mt-switch
と記述します。マークアップの構造はチェックボックスと同じになります。
<span class="custom-control-description mr-2">ラベル名</span><input type="checkbox" class="mt-switch" id="exampleSwitch" /><label for="exampleSwitch">ラベル名</label>
<div class="form-group">
<label for="exampleFormControlFile1">ファイル</label>
<input type="file" class="form-control-file" id="exampleFormControlFile1">
</div>
フォーム要素の直下に要素を記述することで実装できます。実装例では span
に記述されている .mt-suggest__select
ですが、他の要素でも大丈夫です。
この UI を実装する際は、.form-group
が記述されている要素に .position-relative
も追加してください。
<div class="form-group position-relative">
<label for="exampleInputTag">タグ</label>
<input type="text" class="form-control" id="exampleInputTag">
<div class="mt-suggest">
<div class="mt_suggest__list">
<ul>
<li><span class="mt-suggest__select">...</span></li>
</ul>
</div>
</div>
</div>