表单
表单控件样式、布局选项和用于创建各种表单的自定义组件的示例和使用指南。
总览
Bootstrap的表单控件扩展了我们用类重置的表单样式 。使用这些类可以选择自定义显示,以便在浏览器和设备之间实现更一致的呈现。
确保对所有输入使用适当的 type
属性(例如, email
用于电子邮件地址或 number
用于数字信息的号码), 以利用新的输入控件,如电子邮件验证、号码选择等。
这是一个演示Bootstrap表单样式的简单示例。继续阅读有关所需类,表单布局等的文档。
<form>
<div class="mb-3">
<label for="exampleInputEmail1" class="form-label">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp">
<div id="emailHelp" class="form-text">We'll never share your email with anyone else.</div>
</div>
<div class="mb-3">
<label for="exampleInputPassword1" class="form-label">Password</label>
<input type="password" class="form-control" id="exampleInputPassword1">
</div>
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input" id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">Check me out</label>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
表单文本
块级或内联级表单文本可以使用.form-text
创建。
将表单文本与表单控件关联
表单文本应该使用aria-describedby
属性显式地与表单控件关联。 这将确保辅助技术(如屏幕阅读器)在用户聚焦或进入控件时宣布此表单文本。
输入下面的表单文本可以用.form-text
设置样式。如果要使用块级元素,则会添加上边距,以便与上面的输入隔开。
<label for="inputPassword5" class="form-label">Password</label>
<input type="password" id="inputPassword5" class="form-control" aria-describedby="passwordHelpBlock">
<div id="passwordHelpBlock" class="form-text">
Your password must be 8-20 characters long, contain letters and numbers, and must not contain spaces, special characters, or emoji.
</div>
内联文本可以使用任何典型的内联HTML元素(无论是 <span>
, <small>
或其他元素),而只使用.form-text
类。
<div class="row g-3 align-items-center">
<div class="col-auto">
<label for="inputPassword6" class="col-form-label">Password</label>
</div>
<div class="col-auto">
<input type="password" id="inputPassword6" class="form-control" aria-describedby="passwordHelpInline">
</div>
<div class="col-auto">
<span id="passwordHelpInline" class="form-text">
Must be 8-20 characters long.
</span>
</div>
</div>
禁用表单
在输入上添加disabled
的布尔属性 ,以防止用户交互并使其看起来更亮。
<input class="form-control" id="disabledInput" type="text" placeholder="Disabled input here..." disabled>
将disabled
属性添加到 <fieldset>
以禁用其中的所有控件。 浏览器将<fieldset disabled>
中的所有本机表单控件(<input>
, <select>
, 和 <button>
元素)视为已禁用,阻止它们上的键盘和鼠标交互。
但是,如果窗体还包含自定义按钮式元素,例如<a class="btn btn-*">...</a>
,则这些元素样式将只被赋予 pointer-events: none
,这意味着它们仍然可以使用键盘进行聚焦和操作。 在这种情况下,您必须手动修改这些控件,方法是添加 tabindex="-1"
以防止它们接收焦点,并添加aria-disabled="disabled"
以向辅助技术发送状态信号。
<form>
<fieldset disabled>
<legend>Disabled fieldset example</legend>
<div class="mb-3">
<label for="disabledTextInput" class="form-label">Disabled input</label>
<input type="text" id="disabledTextInput" class="form-control" placeholder="Disabled input">
</div>
<div class="mb-3">
<label for="disabledSelect" class="form-label">Disabled select menu</label>
<select id="disabledSelect" class="form-select">
<option>Disabled select</option>
</select>
</div>
<div class="mb-3">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="disabledFieldsetCheck" disabled>
<label class="form-check-label" for="disabledFieldsetCheck">
Can't check this
</label>
</div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</fieldset>
</form>
辅助功能
确保所有窗体控件都有一个适当的可访问名称,以便可以将其目的传达给辅助技术的用户。 实现这一点的最简单方法是使用 <label>
,或者对于 按钮,使用足够的描述性文本作为<button>...</button>
内容的一部分。
对于不可能包含可见的 <label>
或适当的文本内容的情况,仍有其他方法提供可访问的名称,例如:
- 使用
.visually-hidden
类隐藏<label>
元素 - 指向可以使用
aria-labelledby
作为标签的现有元素 - 提供
title
属性 - 使用
aria-label
显式设置元素的可访问名称
如果这些都不存在,辅助技术可能会使用placeholder
属性作为 <input>
和 <textarea>
元素上可访问名称的后备。本节中的示例提供了一些建议的、针对具体情况的方法。
虽然使用视觉隐藏的内容(.visually-hidden
, aria-label
, 甚至 placeholder
内容,一旦表单字段有内容就会消失)将有利于辅助技术用户,但是缺少可见标签文本对于某些用户来说仍然是个问题。 某种形式的可见标签通常是最好的方法,无论是对于可访问性还是可用性