Stylisation des Formulaires et des Champs de Saisie
Glissez pour afficher le menu
Lors de la création d'interfaces utilisateur avec React, les formulaires et les éléments de saisie sont essentiels pour la collecte des données utilisateur. Tailwind CSS propose un ensemble puissant d'utilitaires permettant de styliser les champs de saisie, les étiquettes et les états de validation pour une expérience soignée et accessible. Il est possible d'utiliser des utilitaires de base comme border, rounded, px et py pour définir la forme et l'espacement des champs. Pour la couleur et le contraste, des utilitaires tels que bg-white, text-gray-700, border-gray-300 et placeholder-gray-400 assurent clarté et lisibilité.
Pour améliorer l'expérience utilisateur, Tailwind fournit des utilitaires basés sur l'état pour les états de focus, d'erreur et de désactivation. Par exemple, focus:outline-none et focus:ring-2 focus:ring-blue-500 mettent en évidence un champ lorsqu'il reçoit le focus, indiquant clairement à l'utilisateur où il saisit du texte. Pour les états d'erreur, border-red-500 et text-red-600 signalent visuellement les problèmes, tandis que disabled:bg-gray-100 et disabled:cursor-not-allowed indiquent clairement lorsqu'un champ n'est pas interactif. Les étiquettes peuvent être stylisées avec block, mb-1 et font-medium pour un espacement et une mise en valeur appropriés, garantissant des formulaires à la fois attrayants et accessibles.
Considérez cet exemple d'un composant de formulaire React stylisé avec Tailwind. Il inclut un champ de texte avec une étiquette et affiche différents styles pour les états normal, focus, erreur et désactivé. Vous pouvez observer comment chaque état est géré à l'aide des classes 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>
);
}
Ce formulaire utilise les utilitaires Tailwind pour gérer les éléments suivants :
- État normal :
border-gray-300,text-gray-700,bg-white; - État focus :
focus:ring-2,focus:ring-blue-500,focus:outline-none; - État d'erreur :
border-red-500,text-red-600, et un message d'erreur entext-red-600; - État désactivé :
bg-gray-100,cursor-not-allowed.
En combinant ces utilitaires, il est possible de créer des formulaires visuellement clairs, accessibles et réactifs aux interactions utilisateur.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion