Türkçe

Bileşenlerin yalnızca görüntü alanı boyutuna göre değil, konteynerlerinin stiline göre uyum sağlamasına olanak tanıyan güçlü bir duyarlı tasarım yaklaşımı olan CSS Konteyner Stil Sorgularını keşfedin. Çeşitli global web siteleri için pratik uygulamaları öğrenin.

CSS Konteyner Stil Sorguları: Global Uygulamalar için Stil Tabanlı Duyarlı Tasarım

Geleneksel duyarlı tasarım, bir web sitesinin düzenini ve stillerini görüntü alanı boyutuna göre uyarlayarak büyük ölçüde medya sorgularına dayanır. Etkili olmasına rağmen, bu yaklaşım aynı görüntü alanı içinde farklı bağlamlara uyum sağlaması gereken karmaşık bileşenlerle uğraşırken tutarsızlıklara ve zorluklara yol açabilir. CSS Konteyner Stil Sorguları, öğelerin çevreleyen öğelerine uygulanan stile yanıt vermesine olanak tanıyarak ve gerçekten bileşen tabanlı duyarlı davranış sunarak daha ayrıntılı ve sezgisel bir çözüm sunar.

CSS Konteyner Stil Sorguları Nedir?

Konteyner Stil Sorguları, konteyner sorgularının gücünü basit boyut tabanlı koşulların ötesine taşır. Bir konteynerin genişliğini veya yüksekliğini kontrol etmek yerine, o konteynere uygulanan belirli CSS özelliklerinin ve değerlerinin varlığını kontrol etmenize olanak tanır. Bu, bileşenlerin stillerini yalnızca boyutlarına göre değil, konteynerin bağlamına göre uyarlamasını sağlar.

Şöyle düşünün: "Görüntü alanı 768 pikselden daha mı geniş?" diye sormak yerine, "Bu konteynerde --theme: dark; özel özelliği ayarlanmış mı?" diye sorabilirsiniz. Bu, web siteniz veya uygulamanız boyunca farklı temalara, düzenlere veya marka varyasyonlarına sorunsuz bir şekilde uyum sağlayabilen esnek ve yeniden kullanılabilir bileşenler oluşturmak için yepyeni bir olanaklar dünyası açar.

Konteyner Stil Sorgularının Faydaları

CSS Konteyner Stil Sorguları Nasıl Kullanılır?

İşte konteyner stil sorgularının nasıl uygulanacağına dair bir döküm:

1. Konteyneri Ayarlama

Öncelikle, bir öğeyi konteyner olarak belirlemeniz gerekir. Bunu container-type özelliğini kullanarak yapabilirsiniz:

.container {
  container-type: inline-size;
}

inline-size değeri en yaygın ve kullanışlı olanıdır, çünkü konteynerin satır içi (yatay) boyutunu sorgulamasına olanak tanır. Ayrıca hem satır içi hem de blok boyutunu sorgulayan size değerini de kullanabilirsiniz. Dikkatli olmazsanız yalnızca size kullanmak performans sorunlarına yol açabilir.

Alternatif olarak, bir konteyneri boyut sorguları için değil, yalnızca stil sorguları için kullanmak üzere container-type: style veya her ikisini de kullanmak için container-type: size style kullanın. Konteyner adını kontrol etmek için container-name: my-container kullanın ve ardından onu @container my-container (...) ile hedefleyin.

2. Stil Sorgularını Tanımlama

Şimdi, belirli bir koşul karşılandığında uygulanacak stilleri tanımlamak için @container style() at-rule'u kullanabilirsiniz:

@container style(--theme: dark) {
  .component {
    background-color: #333;
    color: #fff;
  }
}

Bu örnekte, @container kuralı içindeki stiller, yalnızca çevreleyen öğesinde --theme özel özelliği dark olarak ayarlanmışsa .component öğesine uygulanacaktır.

3. Konteynere Stilleri Uygulama

Son olarak, stil sorgularınızın kontrol ettiği CSS özelliklerini konteyner öğesine uygulamanız gerekir:

<div class="container" style="--theme: dark;">
  <div class="component">This is a component. </div>
</div>

Bu örnekte, .component, konteynerine (basitlik adına) doğrudan HTML'de --theme: dark; stili uygulandığı için koyu bir arka plana ve beyaz metne sahip olacaktır. En iyi uygulama, stilleri CSS sınıfları aracılığıyla uygulamaktır. Konteyner üzerindeki stilleri dinamik olarak değiştirmek ve stil sorgusu güncellemelerini tetiklemek için JavaScript de kullanabilirsiniz.

Global Uygulamalar için Pratik Örnekler

1. Temalı Bileşenler

Birden çok temayı destekleyen bir web sitesi hayal edin. Bileşenlerin stilini etkin temaya göre otomatik olarak ayarlamak için konteyner stil sorgularını kullanabilirsiniz.

/* CSS */
.app-container {
  --theme: light;
}

@container style(--theme: dark) {
  .card {
    background-color: #333;
    color: #fff;
  }
}

@container style(--theme: light) {
  .card {
    background-color: #f0f0f0;
    color: #333;
  }
}

/* HTML */
<div class="app-container" style="--theme: dark;">
  <div class="card">
    <h2>Card Title</h2>
    <p>Card content.</p>
  </div>
</div>

Bu örnekte, .card bileşeni, konteynerinin --theme özelliğine göre otomatik olarak koyu ve açık tema arasında geçiş yapacaktır. Bu, kullanıcıların tercihlerine göre farklı temalar seçebildiği siteler için çok faydalıdır.

2. Düzen Varyasyonları

Mevcut alana veya sayfanın genel düzenine göre bileşenler için farklı düzen varyasyonları oluşturmak amacıyla konteyner stil sorgularını kullanabilirsiniz. Bir dil seçim bileşeni düşünün. Ana gezinme menüsünde kompakt bir açılır menü olabilir. Altbilgi (footer) içinde ise mevcut dillerin tam bir listesi olabilir.

/* CSS */
.navigation {
  --layout: compact;
}

.footer {
  --layout: expanded;
}

@container style(--layout: compact) {
  .language-selector {
    /* Styles for compact dropdown */
  }
}

@container style(--layout: expanded) {
  .language-selector {
    /* Styles for full list of languages */
  }
}

/* HTML */
<nav class="navigation" style="--layout: compact;">
  <div class="language-selector">...

<footer class="footer" style="--layout: expanded;">
  <div class="language-selector">...

Bu yaklaşım, farklı cihazlar ve platformlar arasında çeşitli kullanıcı arayüzlerine hitap eden web siteleri için değerlidir. Mobil ve masaüstü site yapılarının genellikle büyük ölçüde farklılık gösterdiğini ve bunun bileşenlerin uyum sağlamasına yardımcı olabileceğini göz önünde bulundurun.

3. İçerik Türüne Uyum Sağlama

Makale özetleri olan bir haber sitesi düşünün. Özetlerin sunumunu, bir resim içerip içermediklerine göre ayarlamak için konteyner stil sorgularını kullanabilirsiniz.

/* CSS */
.article-summary {
  --has-image: false;
}

@container style(--has-image: true) {
  .article-summary {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 1rem;
  }
}

/* HTML (with image) */
<div class="article-summary" style="--has-image: true;">
  <img src="..." alt="..." />
  <div>...
</div>

/* HTML (without image) */
<div class="article-summary" style="--has-image: false;">
  <div>...
</div>

Bu, makale özetlerinin daha görsel olarak çekici ve bilgilendirici bir sunumunu sağlayarak kullanıcı deneyimini iyileştirir. `--has-image` özelliğini doğrudan HTML'de ayarlamanın ideal olmadığını unutmayın. Daha iyi bir yaklaşım, bir görüntünün varlığını tespit etmek için JavaScript kullanmak ve `.article-summary` öğesine dinamik olarak bir sınıf (örneğin, `.has-image`) eklemek veya kaldırmak ve ardından `--has-image` özel özelliğini `.has-image` sınıfı için CSS kuralı içinde ayarlamak olacaktır.

4. Yerelleştirilmiş Stil

Uluslararası web siteleri için, konteyner stil sorguları dile veya bölgeye göre stilleri uyarlamak için kullanılabilir. Örneğin, daha uzun metinlere sahip diller için farklı yazı tipi boyutları veya boşluklar kullanmak isteyebilirsiniz.

/* CSS */
.locale-container {
  --language: en;
}

@container style(--language: ja) {
  .text {
    font-size: 1.1em;
    letter-spacing: 0.05em;
  }
}

@container style(--language: ar) {
  .text {
    direction: rtl;
  }
}

/* HTML */
<div class="locale-container" style="--language: ja;">
  <p class="text">...</p>
</div>

Bu, farklı dil kitleleri için daha özel ve kullanıcı dostu deneyimler oluşturmaya olanak tanır. Arapça ve İbranice gibi bazı dillerin sağdan sola yazıldığını ve belirli stillerin uygulanması gerektiğini unutmayın. Japonca ve diğer Doğu Asya dilleri için, karakterleri düzgün bir şekilde oluşturmak amacıyla farklı boşluk ve yazı tipi boyutu gerekebilir.

5. Erişilebilirlik Hususları

Konteyner stil sorguları, bileşen stillerini kullanıcı tercihlerine veya cihaz yeteneklerine göre uyarlayarak erişilebilirliği de artırabilir. Örneğin, kullanıcı işletim sisteminde yüksek kontrast modunu etkinleştirdiyse bir bileşenin kontrastını artırabilirsiniz.

/* CSS */
body {
  --high-contrast: false;
}

@media (prefers-contrast: more) {
  body {
    --high-contrast: true;
  }
}

@container style(--high-contrast: true) {
  .component {
    background-color: black;
    color: white;
  }
}

/* HTML */
<div class="component">...

Bu, web sitenizin yetenekleri ne olursa olsun herkes tarafından kullanılabilir ve erişilebilir olmasını sağlar. İşletim sistemi düzeyinde yüksek kontrast modunu tespit etmek için `@media (prefers-contrast: more)` medya sorgusunun kullanıldığına ve ardından `--high-contrast` özel özelliğinin ayarlandığına dikkat edin. Bu, kullanıcının sistem ayarlarına dayalı olarak bir stil sorgusu kullanarak stil değişikliklerini tetiklemenize olanak tanır.

En İyi Uygulamalar

Tarayıcı Desteği

Konteyner stil sorguları, Chrome, Firefox, Safari ve Edge dahil olmak üzere modern tarayıcılarda mükemmel tarayıcı desteğine sahiptir. Ancak, eski tarayıcılar bu özelliği tam olarak desteklemeyebilir. Bu tarayıcılar için yedek stiller sağlamak üzere özellik sorguları kullandığınızdan veya bir polyfill kullandığınızdan emin olun.

Sonuç

CSS Konteyner Stil Sorguları, gerçekten bileşen tabanlı ve uyarlanabilir web siteleri ve uygulamalar oluşturmanıza olanak tanıyan güçlü ve esnek bir duyarlı tasarım yaklaşımı sunar. Konteyner öğelerinin stilinden yararlanarak tasarımlarınızda yeni bir kontrol ve ayrıntı düzeyi açabilir, bu da küresel bir kitle için daha sürdürülebilir, ölçeklenebilir ve kullanıcı dostu deneyimler sağlar.

Çeşitli temalara, düzenlere, dillere ve erişilebilirlik gereksinimlerine sorunsuz bir şekilde uyum sağlayan duyarlı bileşenler oluşturmak için konteyner stil sorgularını benimseyin ve gerçekten küresel bir web deneyimi yaratın.

Kaynaklar