バリアント 
バリアントを使用すると、Tailwind CSSの`hover:`バリアントのように、既存のルールにいくつかのバリエーションを適用できます。
例 
ts
variants: [
  // hover:
  (matcher) => {
    if (!matcher.startsWith('hover:'))
      return matcher
    return {
      // slice `hover:` prefix and passed to the next variants and rules
      matcher: matcher.slice(6),
      selector: s => `${s}:hover`,
    }
  },
],
rules: [
  [/^m-(\d)$/, ([, d]) => ({ margin: `${d / 4}rem` })],
]- `matcher`は、バリアントが有効になるタイミングを制御します。戻り値が文字列の場合、ルールに一致するセレクターとして使用されます。
- `selector`は、生成されたCSSセレクターをカスタマイズする機能を提供します。
内部動作 
`hover:m-2`のマッチング時に何が起こったかを見てみましょう。
- `hover:m-2`はユーザーの使用状況から抽出されます。
- `hover:m-2`は、マッチングのためにすべてのバリアントに送信されます。
- `hover:m-2`はバリアントと一致し、`m-2`を返します。
- 結果の`m-2`は、次のバリアントマッチングに使用されます。
- 他に一致するバリアントがない場合、`m-2`はルールとのマッチングに進みます。
- 最初のルールが一致し、`.m-2 { margin: 0.5rem; }`が生成されます。
- 最後に、バリアントの変換を生成されたCSSに適用します。この場合、`selector`フックに`:hover`を付加します。
結果として、以下のCSSが生成されます。
css
.hover\:m-2:hover { margin: 0.5rem; }これにより、ユーザーが要素にカーソルを合わせた場合にのみ`m-2`が適用されます。
さらに詳しく 
バリアントシステムは非常に強力であり、このガイドではすべてを網羅することはできません。 デフォルトプリセットの実装を確認して、より高度な使用方法をご覧ください。