Skip to content

Variants ​

Variants, mevcut kurallarınıza bazı varyasyonlar uygulamanıza olanak tanır, Tailwind CSS'teki hover: varyantı gibi.

Example ​

ts
variants: [
  // hover:
  (matcher) => {
    if (!matcher.startsWith('hover:'))
      return matcher
    return {
      // `hover:` önekini dilimle ve sonraki varyantlara ve kurallara ilet
      matcher: matcher.slice(6),
      selector: s => `${s}:hover`,
    }
  },
],
rules: [
  [/^m-(\d)$/, ([, d]) => ({ margin: `${d / 4}rem` })],
]
  • matcher, varyantın ne zaman etkinleştirildiğini kontrol eder. Dönüş değeri bir string ise, kuralları eşleştirmek için seçici olarak kullanılacaktır.
  • selector, oluşturulan CSS seçicisini özelleştirme olanağı sağlar.

Under the hood ​

hover:m-2 için eşleşme yapılırken neler olduğuna bir tur atalım:

  • hover:m-2, kullanıcı kullanımlarından çıkarılır
  • hover:m-2, eşleştirme için tüm varyantlara gönderilir
  • hover:m-2, varyantımız tarafından eşleştirilir ve m-2 döndürür
  • sonuç m-2, bir sonraki varyant eşleştirme turu için kullanılacaktır
  • başka bir varyant eşleşmezse, m-2 kuralları eşleştirmeye gidecektir
  • ilk kuralımız eşleşir ve .m-2 { margin: 0.5rem; } oluşturur
  • son olarak, varyantlarımızın dönüşümünü oluşturulan CSS'e uygularız. Bu durumda, selector kancasına :hover ekledik

Sonuç olarak, aşağıdaki CSS oluşturulacaktır:

css
.hover\:m-2:hover { margin: 0.5rem; }

Bununla, m-2'yi yalnızca kullanıcılar öğenin üzerine geldiğinde uygulayabiliriz.

Going further ​

Varyant sistemi çok güçlüdür ve bu kılavuzda tam olarak ele alınamaz, daha gelişmiş kullanımları görmek için varsayılan preset'in uygulamasını kontrol edebilirsiniz.

Released under the MIT License.