CSS'de if() Fonksiyonunu Doğru Şekilde Nasıl Kullanılır

CSS'de if() Fonksiyonunu Doğru Şekilde Nasıl Kullanılır

Chrome 137 ile birlikte CSS'e eklenen if() fonksiyonu, koşullu değerleri ifade etmek için güçlü bir yol sunuyor. Fonksiyon, koşul-değer çiftlerini kabul eder ve ilk doğru koşulun değerini döndürür.

Temel Sözdizimi

css
.box {
  --theme: dark;
  background: if(style(--theme: dark), black, white);
  color: if(style(--theme: dark), white, black);
}

Hesaplanan Değerler ile Sorun

Hesaplanan değerlerle çalışırken dikkat edilmesi gereken bir durum var:

css
.box {
  --n: 6;
  --f: calc(var(--n) / 2); / 3 olmasını bekliyoruz /
  background: if(style(--f: 3), red, green); / Yeşil renk alıyoruz! /
}

Neden yeşil? Çünkü --f değeri henüz hesaplanmamış durumda.

Sorunun Nedeni

Bu durum kafa karıştırıcı olabilir, ancak çözümü oldukça basit. Tarayıcının hesaplamayı gerçekleştirebilmesi için değeri @property kullanarak kaydetmeniz gerekiyor. Aksi takdirde, tarayıcı değeri olduğu gibi görür (sanki bir string değeri gibi).

Doğru Kullanım

Hesaplanan değerlerin doğru çalışması için @property ile kayıt yapın:

css
@property --f {
  syntax: "<number>";
  inherits: false;
  initial-value: 0;
}

.box {
  --n: 6;
  --f: calc(var(--n) / 2); / Şimdi gerçekten 3 /
  background: if(style(--f: 3), red, green); / Kırmızı renk alıyoruz /
}

Daha Fazla Örnek

Tema Değiştirme

css
.card {
  --theme: light;
  background: if(
    style(--theme: dark),
    #333,
    style(--theme: light),
    #fff,
    #f0f0f0 / varsayılan /
  );
}

Sayısal Karşılaştırmalar

css
@property --count {
  syntax: "<integer>";
  inherits: false;
  initial-value: 0;
}

.notification {
  --count: 5;
  display: if(style(--count: 0), none, block);
  background: if(style(--count: 0), transparent, red);
}

Basit Koşullar

css
.button {
  --disabled: false;
  opacity: if(style(--disabled: true), 0.5, 1);
  cursor: if(style(--disabled: true), not-allowed, pointer);
}

Tarayıcı Desteği

CSS if() fonksiyonu şu anda sadece Chrome 137+ sürümünde destekleniyor. Diğer tarayıcılar için fallback değerler kullanmayı unutmayın:

css
.box {
  / Fallback /
  background: gray;

  / Modern tarayıcılar için /
  background: if(style(--theme: dark), black, white);
}

Özet

  • Sözdizimi: if(koşul, değer1, koşul2, değer2, varsayılan)
  • Hesaplanan değerler: @property ile kayıt gerektirir
  • Tarayıcı desteği: Chrome 137+ (2025 itibariyle)
  • Fallback: Eski tarayıcılar için alternatif değerler sağlayın

CSS if() fonksiyonu, koşullu stilleri daha temiz ve okunabilir şekilde yazmanıza olanak tanır. Hesaplanan değerlerle çalışırken @property kaydını unutmayın ve tarayıcı desteği için fallback değerler kullanın.

Makale Bilgileri

Yazar: İsmail Hakkı EREN

İlgili Yazılar