Saltar al contenido principal Saltar a la navegación de la documentación

Formularios

Ejemplos y directrices de uso para los estilos de controles de formulario, opciones de diseño y componentes personalizados para crear una gran variedad de formularios.

Descripción general

Los controles de formulario de Bootstrap se expanden sobre nuestros estilos de formulario Reboot con clases. Usa estas clases para optar por sus visualizaciones personalizadas para un renderizado más consistente entre navegadores y dispositivos.

Asegúrate de usar un atributo type apropiado en todas las entradas (p. ej., email para direcciones de correo electrónico o number para información numérica) para aprovechar los nuevos controles de entrada como la verificación de correo electrónico, selección de números y más.

Aquí hay un ejemplo rápido para demostrar los estilos de formulario de Bootstrap. Sigue leyendo para ver la documentación sobre las clases requeridas, el diseño de formularios y más.

Nunca compartiremos tu correo electrónico con nadie más.
html
<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>

Formularios deshabilitados

Añade el atributo booleano disabled en una entrada para evitar interacciones del usuario y hacerla aparecer más clara.

<input class="form-control" id="disabledInput" type="text" placeholder="Disabled input here..." disabled>

Añade el atributo disabled a un <fieldset> para deshabilitar todos los controles dentro. Los navegadores tratan todos los controles de formulario nativos (elementos <input>, <select> y <button>) dentro de un <fieldset disabled> como deshabilitados, evitando tanto las interacciones de teclado como de ratón en ellos.

Sin embargo, si tu formulario también incluye elementos personalizados tipo botón como <a class="btn btn-*">...</a>, estos solo recibirán un estilo de pointer-events: none, lo que significa que siguen siendo enfocables y operables usando el teclado. En este caso, debes modificar manualmente estos controles añadiendo tabindex="-1" para evitar que reciban el foco y aria-disabled="disabled" para señalar su estado a las tecnologías de asistencia.

Ejemplo de fieldset deshabilitado
html
<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>

Accesibilidad

Asegúrate de que todos los controles de formulario tengan un nombre accesible apropiado para que su propósito pueda ser transmitido a los usuarios de tecnologías de asistencia. La forma más simple de lograr esto es usar un elemento <label>, o—en el caso de los botones—incluir texto suficientemente descriptivo como parte del contenido de <button>...</button>.

Para situaciones donde no es posible incluir una <label> visible o contenido de texto apropiado, hay formas alternativas de proporcionar aún un nombre accesible, como:

  • Elementos <label> ocultos usando la clase .visually-hidden
  • Apuntar a un elemento existente que puede actuar como etiqueta usando aria-labelledby
  • Proporcionar un atributo title
  • Establecer explícitamente el nombre accesible en un elemento usando aria-label

Si ninguno de estos está presente, las tecnologías de asistencia pueden recurrir a usar el atributo placeholder como respaldo para el nombre accesible en elementos <input> y <textarea>. Los ejemplos de esta sección proporcionan algunos enfoques sugeridos específicos para cada caso.

Aunque usar contenido visualmente oculto (.visually-hidden, aria-label, e incluso contenido placeholder, que desaparece una vez que un campo de formulario tiene contenido) beneficiará a los usuarios de tecnologías de asistencia, la falta de texto de etiqueta visible puede seguir siendo problemática para ciertos usuarios. Algún tipo de etiqueta visible es generalmente el mejor enfoque, tanto para accesibilidad como para usabilidad.

CSS

Muchas variables de formulario se establecen a un nivel general para ser reutilizadas y extendidas por componentes de formulario individuales. Las verás más a menudo como variables $input-btn-* y $input-*.

Variables Sass

Las variables $input-btn-* son variables globales compartidas entre nuestros buttons y nuestros componentes de formulario. Las encontrarás frecuentemente reasignadas como valores para otras variables específicas de componentes.

$input-btn-padding-y:         .375rem;
$input-btn-padding-x:         .75rem;
$input-btn-font-family:       null;
$input-btn-font-size:         $font-size-base;
$input-btn-line-height:       $line-height-base;

$input-btn-focus-width:         $focus-ring-width;
$input-btn-focus-color-opacity: $focus-ring-opacity;
$input-btn-focus-color:         $focus-ring-color;
$input-btn-focus-blur:          $focus-ring-blur;
$input-btn-focus-box-shadow:    $focus-ring-box-shadow;

$input-btn-padding-y-sm:      .25rem;
$input-btn-padding-x-sm:      .5rem;
$input-btn-font-size-sm:      $font-size-sm;

$input-btn-padding-y-lg:      .5rem;
$input-btn-padding-x-lg:      1rem;
$input-btn-font-size-lg:      $font-size-lg;

$input-btn-border-width:      var(--#{$prefix}border-width);
Traducción mantenida por Esdocu. Visita esdocu.com para ver más documentaciones traducidas.