Estilizando Formulários e Campos de Entrada
Deslize para mostrar o menu
Ao desenvolver interfaces de usuário em React, formulários e elementos de entrada são essenciais para capturar dados dos usuários. O Tailwind CSS oferece um conjunto poderoso de utilitários que permitem estilizar campos de entrada, rótulos e estados de validação para uma experiência refinada e acessível. É possível utilizar utilitários básicos como border, rounded, px e py para definir o formato e o espaçamento dos campos. Para cor e contraste, utilitários como bg-white, text-gray-700, border-gray-300 e placeholder-gray-400 ajudam a manter a clareza e a legibilidade.
Para aprimorar a experiência do usuário, o Tailwind fornece utilitários baseados em estado para foco, erro e desabilitado. Por exemplo, focus:outline-none e focus:ring-2 focus:ring-blue-500 destacam um campo quando recebe foco, deixando claro para o usuário onde está digitando. Para estados de erro, border-red-500 e text-red-600 indicam visualmente problemas, enquanto disabled:bg-gray-100 e disabled:cursor-not-allowed deixam evidente quando um campo não pode ser interagido. Os rótulos podem ser estilizados com block, mb-1 e font-medium para garantir espaçamento e ênfase adequados, tornando os formulários atraentes e acessíveis.
Considere este exemplo de um componente de formulário React estilizado com Tailwind. Ele inclui um campo de texto com rótulo e exibe estilos diferentes para os estados normal, foco, erro e desabilitado. É possível observar como cada estado é tratado utilizando classes do 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 formulário utiliza utilitários do Tailwind para lidar com os seguintes estados:
- Estado normal:
border-gray-300,text-gray-700,bg-white; - Estado de foco:
focus:ring-2,focus:ring-blue-500,focus:outline-none; - Estado de erro:
border-red-500,text-red-600e uma mensagem de erro emtext-red-600; - Estado desabilitado:
bg-gray-100,cursor-not-allowed.
Combinando esses utilitários, é possível criar formulários visualmente claros, acessíveis e responsivos à interação do usuário.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo