Gestion des états Tailwind CSS

Tailwind CSS fournit de puissantes classes d'état (modificateurs d'état) pour contrôler les changements de style des éléments dans différents états d'interaction.

Tailwind CSS fournit une variété de classes d'état (telles que hover:, focus:, active:, etc.) pour aider les développeurs à gérer rapidement les effets d'interaction. En combinant ces classes d'état, vous pouvez facilement implémenter des changements de style pour le survol, le focus, le clic et d'autres états, améliorant ainsi l'expérience utilisateur.

Préfixes des classes d'état :

StatePréfixeEffet
État de survolhover:Contrôle les changements de style d'un élément lorsque la souris le survole.
État de focusfocus:Contrôle les changements de style d'un élément lorsqu'il reçoit le focus.
État actifactive:Contrôle les changements de style d'un élément lorsqu'il est cliqué.
État visitévisited:Contrôle les changements de style des liens visités.
État focus-withinfocus-within:Contrôle les changements de style d'un élément parent lorsque son élément enfant reçoit le focus.
Combinaisons d'étatsAucun préfixe spécifiqueVous pouvez combiner plusieurs préfixes d'état simultanément, commehover:, focus:, etactive:

1. Survol

Survol (hover) l'état fait référence au moment où l'utilisateur survole un élément avec la souris, le style de l'élément change. Utilisezhover:préfixe, vous pouvez facilement obtenir cet effet.

Syntaxe:

hover:{class}

Par exemple,hover:bg-sky-700changera la couleur d'arrière-plan de l'élément lorsque la souris le survole.sky-700。

Utilisation courante:

Exemple

<button class="px-4 py-2 bg-blue-500 text-white hover:bg-sky-700">
Déplacez la souris ici
</button>

Essayez-le »

Lorsque la souris survole, la couleur d'arrière-plan du bouton passe deblue-500àsky-700。

Plus d'exemples:

  • hover:text-white: Change la couleur du texte en blanc au survol.
  • hover:underline: Ajoute un soulignement au texte au survol.
  • hover:border-2 hover:border-gray-500: Ajoute une bordure de 2px au survol et la définit en gris.

2. Concentration

Focus (focus) L'état de focus fait référence au moment où l'utilisateur interagit avec un élément de formulaire (comme un champ de saisie), l'élément obtient le focus. Utilisezfocus:préfixe, vous pouvez contrôler le style de l'élément lorsqu'il a le focus.

Syntaxe:

focus:{class}

Par exemple,focus:ring-2 focus:ring-blue-600affiche un anneau bleu lorsque l'élément obtient le focus.

Exemple

<input class="border p-2 focus:outline-none focus:ring-2 focus:ring-blue-600" type="text" placeholder="Cliquez ici pour activer le focus !">

Essayez-le »

Lorsque l'utilisateur clique sur le champ de saisie ou le sélectionne, le champ de saisie affichera un anneau bleu en surbrillance.

Plus d'exemples:

  • focus:text-black: Change la couleur du texte en noir au focus.
  • focus:border-blue-500: Change la couleur de bordure du champ de saisie en bleu au focus.
  • focus:ring-4 focus:ring-opacity-50 focus:ring-green-500: Affiche un anneau vert au focus, le met en évidence et définit l'opacité.

3. Active

Active (active) l'état désigne le moment où un élément est cliqué par l'utilisateur, le style de l'élément change. Utilisezactive:préfixe pour contrôler le style lorsqu'on clique.

Syntaxe:

active:{class}

Par exemple,active:bg-green-700change la couleur d'arrière-plan en vert lorsque l'élément est pressé.

Utilisation courante:

Exemple

<button class="px-4 py-2 bg-blue-500 text-white active:bg-green-700">
Cliquez ici
</button>

Essayez-le »

Lorsque le bouton est pressé, la couleur d'arrière-plan devient verte.green-700。

Plus d'exemples:

  • active:text-gray-600: Change la couleur du texte en gris au clic.
  • active:ring-2 active:ring-opacity-50 active:ring-green-500: Ajoute un effet de surbrillance d'anneau vert à l'élément au clic.

4. États combinés

Tailwind CSS prend en charge la combinaison de plusieurs modificateurs d'état, ce qui vous permet de contrôler plus précisément les changements de style dans les états d'interaction. Par exemple, vous pouvez combiner les états hover, focus, active, ainsi que le responsive ou le mode sombre.

Syntaxe:

{state}:{class}

Par exemple,dark:md:hover:bg-fuchsia-600modifie la couleur d'arrière-plan en mode sombre, aux points d'arrêt moyens, et au survol.

Exemple

<button class="px-4 py-2 bg-blue-500 text-white hover:bg-sky-700 focus:outline-none dark:hover:bg-fuchsia-600">
Survolez-moi ou mettez le focus sur moi
</button>

Essayez-le »

En mode normal, au survol, la couleur d'arrière-plan du bouton passe àsky-700, et en mode sombre, la couleur d'arrière-plan passe àfuchsia-600。

Plus d'exemples:

  • sm:focus:ring-2: Sur les appareils à petit écran, ajoutez un anneau de surbrillance de 2px lorsque l'élément reçoit le focus.
  • lg:active:bg-red-500: Sur les appareils à grand écran, changez la couleur d'arrière-plan en rouge lorsque le bouton est cliqué.

5. Pseudo-classes

Tailwind CSS prend également en charge plusieurs modificateurs de pseudo-classes, ce qui vous permet d'appliquer des styles en fonction de la position ou de l'ordre des éléments dans le document.

Modificateurs de pseudo-classes courants:

  • first-child: S'applique au premier élément enfant.
  • last-child: S'applique au dernier élément enfant.
  • odd-child: S'applique aux éléments enfants aux positions impaires.
  • even-child: S'applique aux éléments enfants aux positions paires.

Exemple

<ul class="space-y-4">
  <li class="first:font-bold last:font-light">Élément 1</li>
  <li class="odd:bg-gray-100">Élément 2</li>
  <li class="even:bg-gray-200">Élément 3</li>
</ul>

Essayez-le »
  • Le premier élément de la listeItem 1sera en gras, et le dernier élément de la listeItem 3aura une graisse de police plus légère.
  • Les éléments impairs et pairs sont distingués par des couleurs d'arrière-plan différentes.

6. États de formulaire

Tailwind CSS fournit des classes d'état de formulaire pour contrôler les changements de style des éléments de formulaire dans différents états, tels que required (required), invalide (invalid) et désactivé (disabled) états.

Classes courantes:

  • required: Indique que le champ de saisie est requis.
  • invalid: Utilisé pour une saisie de formulaire invalide.
  • disabled: Éléments de formulaire désactivés.

Exemple

<input class="border p-2 required:border-red-500 invalid:border-yellow-500 disabled:bg-gray-300" type="text" placeholder="Saisissez le contenu">

Essayez-le »
  • Si le champ de saisie est invalide, une bordure jaune sera affichée.
  • Si le champ de saisie est désactivé, la couleur d'arrière-plan deviendra grise.

7. Mise en forme basée sur l'état du parent (modificateur de groupe)

Tailwind CSS vous permet d'affecter le style des éléments enfants lorsque l'élément parent est survolé ou a le focus. En utilisant legroup-hoveretgroup-focusmodificateur, vous pouvez ajuster le style de l'élément enfant lorsque l'état de l'élément parent change.

Syntaxe:

group-{state}:{class}

Par exemple,group-hover:bg-gray-300définira la couleur d'arrière-plan de l'élément enfant en gris lorsque l'élément parent est survolé.

Exemple

<div class="group">
  <button class="px-4 py-2 bg-blue-500 text-white group-hover:bg-gray-300">
Survolez le parent
  </button>
</div>

Essayez-le »

Lorsque le conteneur parent est survolé, la couleur d'arrière-plan du bouton devient grise.

8. Responsive et mode sombre

Tailwind CSS vous permet de combiner les préfixes responsives et les modificateurs de mode sombre pour appliquer différents styles à différentes tailles d'écran et différents modes.

Syntaxe:

  • Préfixes responsives :sm:, md:, lg:, xl:, 2xl:
  • Préfixe du mode sombre :dark:

Exemple

<button class="px-4 py-2 bg-blue-500 text-white dark:bg-gray-800 sm:hover:bg-blue-700 md:focus:ring-2 md:focus:ring-blue-500">
Bouton responsive et mode sombre
</button>

Essayez-le »

Sur les petits écrans, la couleur d'arrière-plan change au survolblue-700; sur les écrans moyens, un anneau bleu en surbrillance est ajouté au focus, et en mode sombre, la couleur d'arrière-plan devient grise.

9. Configuration des variantes

Danstailwind.config.jsDans le fichier, vous pouvez utiliser lavariantssection pour configurer quelles variantes d'état sont activées.

Exemple

module.exports = {
  theme: {
    extend: {},
  },
  variants: {
    extend: {
      backgroundColor: ['active', 'group-hover'],
      textColor: ['focus-visible', 'disabled'],
    },
  },
}

Dans cette configuration,backgroundColorajoute l'activeetgroup-hoverétat, ettextColorajoute l'focus-visibleetdisabledl'état.

10. Premier, dernier, impair et pair

Lorsqu'un élément est le premier enfant ou le dernier élément, utilisezfirstetlastmodificateur pour définir le style de l'élément :

Exemple

<ul class="space-y-2">
  <li class="first:text-red-500">Premier élément</li>
  <li>Deuxième élément</li>
  <li class="last:font-bold">Dernier élément</li>
</ul>

Essayez-le »

Effet :

  • La couleur du texte du premier élément de liste devient rouge text-red-500.
  • La police du dernier élément de liste devient gras font-bold.

oddModificateur : est utilisé pour sélectionner tous les éléments enfants de position impaire dans le conteneur parent (basé sur un index commençant à 1).

Exemple

<ul class="space-y-2">
  <li class="odd:bg-gray-100">Élément 1</li>
  <li>Élément 2</li>
  <li class="odd:bg-gray-100">Élément 3</li>
  <li>Élément 4</li>
</ul>

Essayez-le vous-même »

Effet :La couleur d'arrière-plan des éléments 1 et 3 de la liste devient gris clair bg-gray-100.

evenModificateur : even est utilisé pour sélectionner tous les éléments enfants en position paire dans le conteneur parent (basé sur un index commençant à 1).

Exemple

<ul class="space-y-2">
  <li>Élément 1</li>
  <li class="even:bg-gray-200">Élément 2</li>
  <li>Élément 3</li>
  <li class="even:bg-gray-200">Élément 4</li>
</ul>

Essayez-le vous-même »

Effet :La couleur d'arrière-plan des éléments 2 et 4 de la liste devient un gris plus foncé bg-gray-200.

Référence des modificateurs

Modificateur Pseudo-classe CSS correspondante/
pseudo-élément ou règle
Description Exemple de code
hover :hover S'applique au survol de la souris <button class="hover:bg-blue-500">Hover me</button>
focus :focus S'applique lorsque l'élément reçoit le focus <input class="focus:ring-2 focus:ring-blue-600" />
focus-within :focus-within S'applique lorsqu'un élément enfant dans le conteneur parent reçoit le focus <div class="focus-within:border-blue-500"><input /></div>
focus-visible :focus-visible Focus activé par la navigation au clavier ou les technologies d'assistance <input class="focus-visible:ring-2 focus-visible:ring-blue-600" />
active :active S'applique lorsque l'élément est enfoncé ou dans un état actif <button class="active:bg-green-700">Click me</button>
visited :visited Lien visité <a class="visited:text-purple-600" href="../index.html">Visited link</a>
target :target S'applique lorsque le lien cible est activé <div id="section" class="target:bg-yellow-500"></div>
first :first-child Premier élément enfant <ul><li class="first:text-red-500">First</li><li>Other</li></ul>
last :last-child Dernier élément enfant <ul><li>Other</li><li class="last:font-bold">Last</li></ul>
odd :nth-child(odd) Éléments enfants impairs (en comptant à partir de 1) <ul><li class="odd:bg-gray-100">Odd</li><li>Even</li></ul>
even :nth-child(even) Éléments enfants pairs <ul><li>Odd</li><li class="even:bg-gray-200">Even</li></ul>
empty :empty Élément avec un contenu vide <div class="empty:bg-gray-50"></div>
disabled :disabled Élément de formulaire désactivé <button class="disabled:opacity-50" disabled>Disabled</button>
enabled :enabled Élément de formulaire activé <input class="enabled:border-blue-500" />
checked :checked Case à cocher ou bouton radio cochés <input type="checkbox" class="checked:bg-blue-500" checked />
required :required L'élément de formulaire est requis <input class="required:border-red-500" required />
before ::before Pseudo-élément inséré avant l'élément <div class="before:content-['*'] before:text-red-500"></div>
after ::after Pseudo-élément inséré après l'élément <div class="after:content-['!'] after:text-green-500"></div>
sm @media (min-width: 640px) Petits écrans (à partir de 640px) <div class="sm:bg-blue-100">Resize to small screen</div>
dark @media (prefers-color-scheme: dark) Mode sombre <div class="dark:bg-black dark:text-white">Dark mode content</div>
rtl [dir="rtl"] Direction du texte de droite à gauche <div dir="rtl" class="rtl:text-right">Right to Left</div>
aria-checked [aria-checked="true"] Appliquer des styles aux éléments avec des attributs ARIA <div aria-checked="true" class="aria-checked:bg-green-500">Checked</div>
motion-safe @media (prefers-reduced-motion: no-preference) Préférence d'animation : s'applique lorsqu'aucune préférence n'est définie <div class="motion-safe:transition-transform motion-safe:duration-500"></div>
Autres extensions