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

Paylaş:
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