Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
CSS :root, bir belgedeki en üst seviyedeki kök elementi seçen sözde sınıftır. HTML belgelerinde bu element html elementidir. En yaygın kullanım alanı, sayfanın tamamında kullanılacak CSS özel özelliklerini yani değişkenlerini tanımlamaktır. Böylece renk, boşluk veya yazı boyutu gibi değerleri tek bir yerden yönetebilirsiniz.

:root nasıl çalışır?​


:root bir element oluşturmaz ve HTML içine ayrıca yazılmaz; CSS seçicisi olarak kullanılır. Örneğin aşağıdaki tanımda --ana-renk ve --icerik-bosluk adlı özel özellikler kök elementte tanımlanır:

Kod:
:root {
  --ana-renk: #2457a6;
  --icerik-bosluk: 1rem;
}

.button {
  background-color: var(--ana-renk);
  padding: var(--icerik-bosluk);
}

Burada var(--ana-renk) ifadesi, :root içinde tanımlanan değeri kullanır. Değişken tanımı yapılmamışsa CSS özelliği geçersiz kalabilir. Tanım bulunamıyorsa yedek değer verebilirsiniz. Ancak tanımlı değişkenin içeriği hedef özelliğin beklediği türe uygun değilse var yedeği otomatik tür doğrulaması yapmaz:

Kod:
.button {
  background-color: var(--ana-renk, #333);
}

:root özgüllüğü 0-1-0, html seçicisininki 0-0-1 değerindedir. Tek bir sınıf seçicisiyle :root aynı özgüllüktedir; aynı öğedeki yarışmada katman, önem ve kural sırası da sonucu belirler. Bir alt öğeye doğrudan yazılan özel özellik ise kökten kalıtılan değerin yerini alır; bu, kökün seçici özgüllüğünü yenme meselesi değildir. Değişkenler kalıtımla alt elementlere aktarıldığı için, :root üzerinde tanımlanan değerler çoğu alt elementte kullanılabilir.

Somut kullanım: tema rengini tek yerden değiştirme​


Bir kart ve düğme için ortak renk kullanacağınızı varsayalım. Değeri doğrudan her kuralda tekrarlamak yerine kökte tanımlayıp ilgili özelliklerde çağırabilirsiniz:

Kod:
:root {
  --arka-plan: #ffffff;
  --metin: #222222;
  --vurgu: #0b63ce;
}

.card {
  background: var(--arka-plan);
  color: var(--metin);
  border: 1px solid var(--vurgu);
}

.card a {
  color: var(--vurgu);
}

--vurgu değerini değiştirdiğinizde karta ait kenarlık ve bağlantı rengi birlikte değişir. Bu, tekrarları azaltır; fakat değişkenin kullanıldığı tüm yerleri etkilediği için adını kullanım amacını açıklayacak şekilde seçmek gerekir.

Ne zaman :root, ne zaman yerel kapsam?​


Değişkenin nerede tanımlanacağı, kullanılacağı alanın kapsamına bağlıdır:

Tanım yeriUygun kullanımSonuç
:rootSite genelindeki renk, yazı tipi veya boşluklarDeğer çoğu alt elementten erişilebilir
Belirli bir sınıfSadece bileşene ait değerlerDeğer o bileşenin kapsamında kalır
:root altında tema seçicisiTema veya mod değiştirmeSeçilen kapsamda değer geçersiz kılınır

Örneğin yalnızca kart bileşeninde kullanılacak bir gölge değerini :root içine koymak yerine .card içinde tanımlamak daha anlaşılır olabilir. Site genelinde paylaşılacak tasarım değerlerini ise :root altında tutabilirsiniz.

Uygulama adımları​


  1. Genel olarak paylaşılacak değerleri belirleyin; örneğin --ana-renk veya --sayfa-boslugu.
  2. Bu değerleri stil dosyanızda :root { ... } bloğu içine yazın.
  3. Kullanmak istediğiniz CSS özelliğinde var(--degisken-adi) biçimini kullanın.
  4. Gerekliyse var(--degisken-adi, yedek-deger) ile yedek değer ekleyin.
  5. Tarayıcıda ilgili elementi inceleyerek değişkenin tanımlı ve kullanılan değerin beklediğiniz gibi olduğunu kontrol edin.

Kural çalışmıyorsa önce değişken adının tanım ve kullanımda aynı yazıldığını, iki tireyle başladığını ve tanımın geçerli bir seçici bloğu içinde bulunduğunu kontrol edin. Tanımlanmamış bir değişkeni yedek değersiz kullanmak, o değişkeni kullanan CSS bildirimini geçersiz hale getirebilir.

Kaynaklar​



Sık sorulan sorular​


:root ile html aynı şey midir?​


HTML belgesinde ikisi aynı kök elementi hedefler; ancak :root bir sözde sınıf seçicisidir, html ise element seçicisidir. Özgüllükleri de aynı değildir.

CSS değişkenlerini kullanmak için JavaScript gerekir mi?​


Hayır. CSS özel özelliklerini :root içinde tanımlamak ve var() ile kullanmak için JavaScript gerekmez. JavaScript yalnızca değeri çalışma anında değiştirmek gibi ek bir davranış istendiğinde kullanılabilir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.