Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Estilización de Formularios y Campos de Entrada | Sección
Estilización de Aplicaciones React con Tailwind CSS

bookEstilización de Formularios y Campos de Entrada

Desliza para mostrar el menú

Al crear interfaces de usuario en React, los formularios y los elementos de entrada son fundamentales para capturar datos del usuario. Tailwind CSS ofrece un conjunto potente de utilidades que permiten estilizar campos de entrada, etiquetas y estados de validación para lograr una experiencia pulida y accesible. Se pueden utilizar utilidades básicas como border, rounded, px y py para definir la forma y el espacio de los campos de entrada. Para el color y el contraste, utilidades como bg-white, text-gray-700, border-gray-300 y placeholder-gray-400 ayudan a mantener la claridad y la legibilidad.

Para mejorar la experiencia del usuario, Tailwind proporciona utilidades basadas en estados para los estados de enfoque, error y deshabilitado. Por ejemplo, focus:outline-none y focus:ring-2 focus:ring-blue-500 resaltan un campo de entrada cuando recibe el foco, facilitando al usuario identificar dónde está escribiendo. Para los estados de error, border-red-500 y text-red-600 indican visualmente los problemas, mientras que disabled:bg-gray-100 y disabled:cursor-not-allowed dejan claro cuándo un campo no se puede utilizar. Las etiquetas pueden estilizarse con block, mb-1 y font-medium para lograr el espaciado y énfasis adecuados, asegurando que los formularios sean atractivos y accesibles.

Considere este ejemplo de un componente de formulario en React estilizado con Tailwind. Incluye un campo de texto con etiqueta y muestra diferentes estilos para los estados normal, enfoque, error y deshabilitado. Se puede observar cómo se maneja cada estado utilizando clases de Tailwind.

import React, { useState } from "react";

function ExampleForm() {
  const [value, setValue] = useState("");
  const [touched, setTouched] = useState(false);
  const [disabled, setDisabled] = useState(false);
  const hasError = touched && value.trim() === "";

  return (
    <form className='max-w-sm mx-auto mt-8'>
      <label
        htmlFor='username'
        className='block mb-1 font-medium text-gray-700'
      >
        Username
      </label>
      <input
        id='username'
        type='text'
        value={value}
        onChange={(e) => setValue(e.target.value)}
        onBlur={() => setTouched(true)}
        disabled={disabled}
        className={`w-full px-3 py-2 border rounded-md shadow-sm placeholder-gray-400
          focus:outline-none focus:ring-2 focus:ring-blue-500
          ${
            hasError
              ? "border-red-500 text-red-600"
              : "border-gray-300 text-gray-700"
          }
          ${disabled ? "bg-gray-100 cursor-not-allowed" : "bg-white"}
        `}
        placeholder='Enter your username'
      />
      {hasError && (
        <p className='mt-1 text-sm text-red-600'>Username is required.</p>
      )}
      <button
        type='button'
        className='mt-4 px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700'
        onClick={() => setDisabled(!disabled)}
      >
        {disabled ? "Enable Input" : "Disable Input"}
      </button>
    </form>
  );
}

Este formulario utiliza utilidades de Tailwind para gestionar lo siguiente:

  • Estado normal: border-gray-300, text-gray-700, bg-white;
  • Estado de enfoque: focus:ring-2, focus:ring-blue-500, focus:outline-none;
  • Estado de error: border-red-500, text-red-600 y un mensaje de error en text-red-600;
  • Estado deshabilitado: bg-gray-100, cursor-not-allowed.

Combinando estas utilidades, es posible crear formularios visualmente claros, accesibles y que respondan a la interacción del usuario.

question mark

¿Qué combinación de clases de Tailwind aplicaría a un elemento de entrada para indicar visualmente un estado de error después de la validación?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 6

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 1. Capítulo 6
some-alt