Casilla de verificación (checkbox)

La casilla de verificación (checkbox) es un componente que permite a las personas usuarias seleccionar una o varias opciones dentro de un conjunto.


Uso

Cuándo usar

  • Se usan cuando las personas usuarias pueden elegir una o más opciones entre varias disponibles.
  • Mostrar una opción simple que requiere aceptación o confirmación adicional, como antes de enviar un formulario.

Cuándo usar

  • Cuando se requiere una única respuesta dentro de un conjunto de opciones, en ese caso utilizar el componente botón de radio
  • Cuando la acción debe ejecutarse de inmediato al seleccionar, en ese caso usar el componente botón

Tipos

Los checkboxes permiten seleccionar una o varias opciones dentro de un grupo. Cuando están seleccionados muestran una marca dentro de la casilla, y cuando no lo están, queda vacía.

Tipos de casilla de verificación

Disposición

Recomendamos una disposición vertical de los checkboxes, ya que facilita la lectura, mejora la accesibilidad y evita que las opciones se pasen por alto.

Ejemplo de disposición vertical
check

Una disposición vertical ayuda a mantener un flujo visual natural y hace más accesible la selección de opciones.

Ejemplo de disposición vertical
close

La disposición horizontal puede dificultar la lectura y comprender qué etiqueta corresponde a cada opción.

Contextos de uso

Para selección múltiples opciones en formularios

Para ofrecer varias opciones dentro de una categoría, usá un grupo de checkboxes. Este grupo debe tener una etiqueta que lo identifique, como un título. Si el grupo incluye más de cinco opciones, considerá usar un componente de selección (select) para facilitar la lectura y la elección.

Ejemplo de contexto de uso en opciones multiples

Aplicación de filtros.

En filtros, los checkboxes permiten seleccionar varias opciones al mismo tiempo sin necesidad de confirmar cada cambio, lo que da flexibilidad para ajustar los resultados según las preferencias.

Ejemplo de contexto de uso en selección multiple

Confirmación y aceptación.

Los checkboxes independientes se usan para confirmar acciones o aceptar condiciones. A diferencia de los botones de radio, se pueden marcar o desmarcar antes de enviar. Suelen ir acompañados de un botón para confirmar. Si se usan para aceptar términos, se recomienda escribir la frase en primera persona y mostrar un enlace con más información.

Ejemplo de contexto de uso en selección multiple

Contenido

Uso de mayúsculas

Utilizar mayúsculas en la letra inicial de todas las etiquetas del grupo.

Longitud del texto

Las etiquetas deben ser legibles, consistentes y concisas. En checkboxes independientes se permite más texto, pero en grupos conviene mantener las etiquetas cortas para no afectar la experiencia si se extienden a una segunda línea.

Etiquetas

Usa etiquetas claras y concisas para que los usuarios puedan escanear las opciones fácilmente. Asegurate de presentar todas las opciones y que no se superpongan. Todas las etiquetas deben ser consistentes en longitud, tiempo verbal y significado. Para etiquetas de grupo, indicá la categoría del conjunto.

Organización

Asegurate de que las opciones de los checkboxes estén organizadas de forma lógica y con sentido. Tené en cuenta que, al listar elementos alfabéticamente, el orden puede cambiar al localizar el texto.

Puntuación

Evita usar signos de puntuación en las etiquetas, excepto cuando la etiqueta sea una oración completa, por ejemplo, en términos y condiciones.

Casilla de selección múltiple (Checkbox)

Predeterminada

Seleccioná una o varias opciones *

  <p class="headline-md">Seleccioná una o varias opciones *</p>
  <div class="form-checkbox">
    <input
      class="form-checkbox-input"
      type="checkbox"
      name="professionCheckbox"
      id="profession-checkbox-designer"
      value="diseñador"
      checked
      />
    <label class="form-checkbox-label" for="profession-checkbox-designer">
      Diseñador
    </label>
  </div>
  <div class="form-checkbox">
    <input
      class="form-checkbox-input"
      type="checkbox"
      name="professionCheckbox"
      id="profession-checkbox-developer"
      value="desarrollador"
      />
    <label class="form-checkbox-label" for="profession-checkbox-developer">
      Desarrollador
    </label>
  </div>
  <div class="form-checkbox">
    <input
      class="form-checkbox-input"
      type="checkbox"
      name="professionCheckbox"
      id="profession-checkbox-content"
      value="redactor"
      />
    <label class="form-checkbox-label" for="profession-checkbox-content">
      Redactor de contenidos
    </label>
  </div>
  <div class="form-checkbox">
    <input
      class="form-checkbox-input is-invalid"
      type="checkbox"
      name="professionCheckbox"
      id="profession-checkbox-validation"
      value="invalido"
      />
    <label class="form-checkbox-label" for="profession-checkbox-validation">
      Inválido
    </label>
  </div>

Checkbox Group

Seleccioná tus hobbies:Opcional

Este es un texto de ayuda que da mas información sobre el Input. Es opcional, pero recomendado, y de no más de 3 líneas.

<div class="form-input-group" role="checkboxgroup" aria-labelledby="group-label">
      <div class="form-label-container">
        <span id="group-label" class="form-label">Seleccioná tus hobbies:</span>
        <span class="badge-forms badge-optional-forms">Opcional</span>
      </div>
      <p class="form-label-description">
        Este es un texto de ayuda que da mas información sobre el Input. Es opcional, pero recomendado, y de
        no más de 3 líneas.
      </p>
      <div class="form-checkbox">
        <input type="checkbox" name="hobbies" value="leer" class="form-checkbox-input" id="checkbox_1" />
        <label class="form-checkbox-label" for="checkbox_1">
          Leer
        </label>
      </div>
      <div class="form-checkbox">
        <input type="checkbox" name="hobbies" value="musica" class="form-checkbox-input" id="checkbox_2" />
        <label class="form-checkbox-label" for="checkbox_2">
          Escuchar música
        </label>
      </div>
      <div class="form-checkbox">
        <input type="checkbox" name="hobbies" value="deporte" class="form-checkbox-input" id="checkbox_3" />
        <label class="form-checkbox-label" for="checkbox_3">
          Hacer deporte
        </label>
      </div>
    </div>

Deshabilitada

  <div class="form-checkbox" >
    <input
      class="form-checkbox-input"
      type="checkbox"
      name="checkboxDisabled"
      id="disabled-checkbox"
      value="disabled"
      disabled
      />
    <label class="form-checkbox-label" for="disabled-checkbox" aria-disabled="true">
      Deshabilitado
    </label>
  </div>
  <div class="form-checkbox" >
    <input
      class="form-checkbox-input"
      type="checkbox"
      name="checkboxDisabled"
      id="disabled-checkbox-checked"
      value="disabled"
      disabled
      checked
      />
    <label class="form-checkbox-label" for="disabled-checkbox-checked" aria-checked="true">
      Deshabilitado
    </label>
  </div>

Sin texto

  <div class="form-checkbox">
    <input
      class="form-checkbox-input"
      type="checkbox"
      name="checkboxNoText"
      id="checkbox-no-text"
      value="Sin texto"
    />
    <label class="form-checkbox-label" for="checkbox-no-text" aria-label="Casilla múltiple sin texto">
    </label>
  </div>

Casilla 'Términos y condiciones'

  <div class="form-checkbox">
    <input
      class="form-checkbox-input"
      type="checkbox"
      name="checkboxTerms"
      id="checkbox-terms"
      value="copywrite"
      />
    <label class="form-checkbox-label" for="checkbox-terms">
      Acepto los <a href="#">términos y condiciones</a>
    </label>
  </div>

Posicionamiento

  <div class="form-checkbox reverse">
    <input
      class="form-checkbox-input"
      type="checkbox"
      name="checkboxPosition"
      id="checkbox-position"
      value="redactor"
      />
    <label class="form-checkbox-label" for="checkbox-position">
      Checkbox posicionado a la derecha
    </label>
  </div>
 

Anatomía

Anatomía de la casilla de verificación
ElementoCarácter
CheckboxObligatorio, indica si la caja de validación esta seleccionada o deseleccionada.
EtiquetaObligatorio, describe la información que la persona usuaria puede seleccionar.
Anatomía de la casilla de verificación
ElementoCarácter
1. LabelObligatorio, texto que informa el tipo de información que la persona usuaria puede seleccionar.
2. Indicador de requeridoOpcional, indica si un campo es obligatorio u opcional.
3. Texto descriptivoOpcional, se utiliza para proporcionar ayuda o contexto adicional a la persona usuaria.
4.Botón de radioObligatorio, describe la información que podes seleccionar.

Estados

Predeterminado (default)

Estado predeterminado del checkbox en una interfaz.

Ejemplo del botón de check en estado predeterminado

Sobre (hover)

Estado que adopta el checkbox cuando un cursor pasa sobre él, cambiando su apariencia para indicar su interactividad a la persona usuaria.

Ejemplo del botón de check en estado 'sobre'

En foco (focus)

Es un principio de accesibilidad que asegura que cualquier elemento interactivo en una interfaz sea claramente visible cuando recibe la atención del usuario, especialmente al ser navegado con el teclado. En Obelisco se utiliza un borde o anillo (focus ring) por fuera del componente en un color distintivo.

Ejemplo del botón de check en estado 'foco'

Error

Para garantizar la accesibilidad, el estado de error debe ser claramente perceptible. En los checkbox, se utiliza un borde en color rojo con suficiente contraste. Esto asegura que todas las personas puedan identificar y corregir errores fácilmente, cumpliendo con las pautas de accesibilidad (WCAG).

Ejemplo del botón de check en estado error

Deshabilitado (disabled)

Estado que indica que el botón no está disponible para la interacción, lo que significa que no puede activarse.

Ejemplo del botón de check en estado deshabilitado

Espaciados

La separación vertical entre checkboxes es de 8px. tanto para dispositivos desktop como mobile.

Podes consultar la ficha de patrones de formulario para conocer la separación entre secciones.

Ejemplo de espaciado del botón de radio

Navegación alternativa

El componente checkbox está construido para ser accesible mediante navegación por teclado y reconocible por lectores de pantalla, comunicando su estado (seleccionado o deseleccionado) de forma clara.

TABENTER

Utilizando el tab la persona usuaria puede navegar a través de elementos de la interfaz. Además, con eltab, puede accionar los elementos sobre los que esté posicionada como botones, enlaces, entre otros.

Ejemplo de navegacion alternativa del botón de radio

Etiquetado descriptivo

Un checkbox siempre debe ir acompañado de una etiqueta <label> clara y relacionada con la acción u opción que representa.

El atributo "for" asocia un <label> con un elemento de formulario como un <input>, <select>, <textarea>, etc. haciendo coincidir su valor con el atributo "id" del elemento correspondiente.

Interactividad limitada

Cuando un checkbox está deshabilitado temporalmente, es importante indicarlo correctamente mediante el atributo "disabled". Además, debe evitarse que el foco del teclado llegue al componente, y debe comunicarse su estado a tecnologías de asistencia.

<div class="form-checkbox"> 
    <input 
      class="form-checkbox-input" 
      type="checkbox" 
      name="professionCheckbox"
      id="profession-checkbox-designer" 
      value="diseñador" 
      checked 
    /> 
    <label class="form-checkbox-label" for="profession-checkbox-designer"> Diseñador </labeñ>
</div>

Criterios WCAG aplicables

Success Criterion 1.3.1 Info and Relationships (Level A)

La información, la estructura y las relaciones transmitidas a través de la presentación pueden determinarse mediante programación o están disponibles en el texto.

Success Criterion 1.4.11 Non-Text Contrast (Level AA)

La presentación visual de elementos de la interfaz de usuario y objetos gráficos tiene por lo menos una relación de contraste de 3:1 con respecto a los colores adyacentes.

Success Criterion 2.1.1 Keyboard (Level A)

Todas las funcionalidades del contenido se puede operar a través de una interfaz de teclado.

Success Criterion 2.4.6 Headings and Labels (Level AA)

Si se utilizan encabezados o etiquetas, deben describir con precisión el propósito o contenido al que se refieren. Esto facilita la comprensión y navegación del contenido, especialmente para personas con discapacidades cognitivas o que utilizan lectores de pantalla.

Success Criterion 2.4.7 Focus Visible (Level AA)

Cualquier interfaz de usuario operable por teclado tiene un modo de operación donde el indicador de enfoque del teclado es visible. Cuando utiliza un teclado para navegar por los checkboxs, los enlaces tienen un subrayado visible y un recuadro outline que indica que los enlaces son interactivos.

Success Criterion 4.1.2 Name, Role, Value (Level A)

Para todos los componentes de la interfaz de usuario (incluidos, entre otros: elementos de formulario, enlaces y componentes generados por scripts), el nombre y la función se pueden determinar mediante programación; los estados, propiedades y valores que puede establecer el usuario se pueden configurar mediante programación; y la notificación de cambios en estos elementos está disponible para los agentes de usuario, incluidas las tecnologías de asistencia.

Navegación de pie de página