İçeriğe geç

Tema ve Özelleştirme

Tailwind teması, CSS değişkenlerinden oluşan düz bir kümedir. Temayı, girdi CSS dosyanızda bir @theme { … } bloğuyla genişletir veya değiştirirsiniz; bu değerleri tema işlevleri aracılığıyla CSS içinden kullanır ve çözümlenen değerleri PHP üzerinden okursunuz. CSS içinde bütünüyle yer alan temada eski tip bir JavaScript yapılandırma dosyası yoktur.

@theme bloğu

Bir @theme bloğu, tasarım belirteçlerini CSS özel özellikleri olarak tanımlar. Her değişkendeki ad alanı öneki (--color-*, --font-*, --breakpoint-*, --spacing-*, …), belirtecin hangi yardımcı sınıfları ve varyantları beslediğini Tailwind'e bildirir.

PHP
use TailwindPHP\tw;

$css = tw::generate('<div class="bg-brand text-brand xs:flex">', '
    @import "tailwindcss";

    @theme {
        --color-brand: #3b82f6;
        --font-heading: "Inter", sans-serif;
        --breakpoint-xs: 20rem;
        --spacing-huge: 10rem;
    }
');

Her belirteç, ad alanı altında yardımcı sınıflar kaydeder. Yukarıdaki örnek bg-brand, text-brand, border-brand, font-heading ailesini, bir xs: duyarlı varyantı ve p-huge/m-huge aralıklarını kullanılabilir kılar; bunlar yalnızca sınıf içeriğinizde göründüklerinde oluşturulur.

CSS
/* bg-brand resolves to the theme variable */
:root, :host {
  --color-brand: #3b82f6;
}
.bg-brand {
  background-color: var(--color-brand);
}

--breakpoint-xs belirteci, xs: varyantını doğrudan kaydeder:

CSS
@media (min-width: 20rem) {
  .xs\:flex {
    display: flex;
  }
}

Yaygın ad alanları

Ad alanı Sağladıkları
--color-* bg-*, text-*, border-*, fill-*, stroke-*, …
--font-* font-* ailesi yardımcı sınıfları
--text-* text-* yazı tipi boyutu yardımcı sınıfları
--breakpoint-* duyarlı varyantlar (sm:, md:, özel xs:)
--spacing-* adlandırılmış aralık değerleri (p-huge, m-huge)
--radius-* rounded-* yardımcı sınıfları
--shadow-* shadow-* yardımcı sınıfları

Ad alanını temizleme

Bir ad alanı joker karakterini initial olarak ayarlamak, kendi belirteçleriniz eklenmeden önce Tailwind için o ad alanındaki varsayılanları kaldırır. Böylece temiz bir paletle başlayabilirsiniz:

CSS
@theme {
    /* Drop every default color, then define only what you need */
    --color-*: initial;
    --color-brand: #3b82f6;
    --color-ink: #111827;
}

--*: initial; tüm temayı temizler. Joker karakter içermeyen bir anahtardaki (--color-red-500: initial;) tek bir initial değeri yalnızca o belirteci kaldırır. -* joker karakteri için değer olarak yalnızca initial kabul edilir; başka bir değer hata verir.

CSS içinde tema değerlerini okuma

theme()

Eski theme() işlevi, v3 tarzı ad alanlarında nokta gösterimiyle bir değer okur. Derleme zamanında belirtecin değerine çözümlenir; bu nedenle özel kurallar ve diğer bildirimler dahil, değer beklenen her yerde kullanılabilir.

PHP
$css = tw::generate('<div class="callout">', '
    @import "tailwindcss";
    .callout { color: theme(colors.red.500); }
');
CSS
.callout {
  color: oklch(63.7% .237 25.331);
}

Nokta yolları temel değişkenlerle eşleşir (colors.red.500 → --color-red-500, fontFamily.sans → sans ailesi). Opaklık değiştiricisi desteklenir: theme(colors.red.500 / 50%). İkinci bağımsız değişken olarak yedek değer verilebilir: theme(colors.brand, #000). Bir yol çözümlenemez ve yedek değer verilmezse, onu kullanan aday kaldırılır.

--theme()

--theme(), bir tema değişkenini CSS özel özellik adıyla okur ve varsayılan olarak bir var() başvurusu döndürür; böylece değer çalışma zamanında değiştirilebilir kalır:

CSS
.btn { color: --theme(--color-brand); }
/* → color: var(--color-brand); */

var() başvurusu yerine çözümlenmiş değeri kullanmak için inline ekleyin: --theme(--color-brand inline). İkinci bağımsız değişken yedek değerdir (--theme(--color-brand, #000)); bir initial yedek değeri özel olarak ele alınır ve kendileri initial olarak çözümlenen iç içe var() başvurularına eklenir. Bir at-kuralının (@media, @container) içinde --theme() her zaman satır içinde çözümlenir; çünkü var() bu önsözlerde geçerli değildir.

--spacing()

--spacing(n), temanın temel aralık birimini (--spacing) n ile çarpar:

CSS
@utility my-gap { gap: --spacing(4); }
/* → gap: calc(var(--spacing) * 4); */

1 çarpanı, temel değişkenin kendisine çözümlenir (--spacing(1) → var(--spacing); p-1 de bunu üretir); 0 ise yalın sıfır uzunluğa çözümlenir.

Yerleşik aralık yardımcı sınıfları da aynı hesaplamayı kullanır; bu nedenle özel değerler p-4, m-4 ve benzerleriyle tutarlı kalır.

--alpha()

--alpha(color / opacity), oklab renk uzayında bir color-mix() kullanarak renge opaklık uygular:

CSS
@utility tint { color: --alpha(var(--color-red-500) / 50%); }
CSS
.tint {
  color: #fb2c3680;
}
@supports (color: color-mix(in lab, red, red)) {
  .tint {
    color: color-mix(in oklab, var(--color-red-500) 50%, transparent);
  }
}

color-mix() biçimi çalışma zamanında değiştirilebilir kalır; öncesindeki, tema değerinden hesaplanan statik yedek, color-mix() desteklemeyen tarayıcıları kapsar. Yedeği polyfills seçeneğiyle kapatın: tw::compile().

Opaklık ve color-mix() → oklab() birleştirme

Opaklık değiştiricileri birleşir. Zaten %50 opaklık taşıyan bir değere %50 uygulandığında, oklab'da hesaplanan %25 elde edilir. Bir opaklık değiştiricisi statik bir renge uygulandığında TailwindPHP, color-mix(in oklab, …) ifadesini somut bir oklab() değerine indirger; bu, yukarı akıştaki Tailwind araç zincirinde lightningcss'in yaptığı dönüşümle aynıdır. Hâlâ var() içinde sarılı olan dinamik renkler, çalışma zamanında değiştirilebilir kalmaları için color-mix() biçimini korur.

PHP üzerinden tema değerlerini okuma

Üç erişimci, çözümlenmiş tema değerlerini PHP dizileri olarak döndürür. Her biri isteğe bağlı bir girdi CSS dizgesi alır (varsayılan @import "tailwindcss";) ve ayrıca bir compiler örneğinde de kullanılabilir.

PHP
use TailwindPHP\tw;

tw::colors();
// ['red-500' => 'oklch(63.7% .237 25.331)', 'blue-500' => 'oklch(62.3% .214 259.815)', ...]

tw::breakpoints();
// ['sm' => '40rem', 'md' => '48rem', 'lg' => '64rem', 'xl' => '80rem', '2xl' => '96rem']

tw::spacing('@import "tailwindcss"; @theme { --spacing-huge: 10rem; }');
// ['huge' => '10rem']

Özelleştirilmiş bir temayı okumak için CSS dizgesi verin:

PHP
tw::colors('@import "tailwindcss"; @theme { --color-brand: #3b82f6; }');
// [..., 'brand' => '#3b82f6']

tw::breakpoints('@import "tailwindcss"; @theme { --breakpoint-xs: 20rem; }');
// ['sm' => '40rem', ..., '2xl' => '96rem', 'xs' => '20rem']

TailwindCSS 4, --spacing-* ölçeği yerine tek bir --spacing temel değer kullanır; bu nedenle tw::spacing() yalnızca tanımladığınız özel --spacing-* belirteçlerini döndürür. Bir compiler örneğinde de aynı yöntemler vardır: $compiler->colors(), $compiler->breakpoints(), $compiler->spacing(). İmza ayrıntıları için başvuru belgesineAPI bakın.

Sonraki adımlar

  • Yönergeler — @apply, @utility, @custom-variant, @layer.
  • İçe aktarımlar — @import, sanal modüller ve Preflight.
  • API — tüm erişimciler ve inceleme yöntemleri.