Ana Karargâh Neler Yapıyoruz?
Hikayemizin Perde Arkası Beyin Kıvılcımları Bağlantıya Geçin

Web Tasarımda Görme Bozukluğu Olanlar için Renk Kontrastı Optimizasyonu

Görme bozukluğu olan kullanıcılar için erişilebilir web tasarımı yapmak, kapsayıcı bir dijital dünya oluşturmanın önemli bir parçasıdır. Renk kontrastı optimizasyonu, bu kullanıcıların web içeriğini daha kolay algılamasını sağlar. İşte görme bozukluğu olanlar için renk kontrastı optimizasyonuna dair detaylı bir rehber:

1. WCAG 2.1 Standartlarını Anlama

Web Content Accessibility Guidelines (WCAG) 2.1, renk kontrastı için minimum standartlar belirler:

  • AA seviyesi için minimum kontrast oranı 4.5:1 (normal metin için)
  • AAA seviyesi için minimum kontrast oranı 7:1 (normal metin için)
  • Büyük metin (18pt veya 14pt bold) için bu oranlar sırasıyla 3:1 ve 4.5:1'dir

2. Renk Kontrastı Hesaplama

Renk kontrastı oranını hesaplamak için şu formülü kullanabilirsiniz:


function getLuminance(r, g, b) {
  let [r1, g1, b1] = [r, g, b].map(c => {
    c /= 255;
    return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
  });
  return 0.2126 * r1 + 0.7152 * g1 + 0.0722 * b1;
}

function getContrastRatio(color1, color2) {
  const l1 = getLuminance(...color1);
  const l2 = getLuminance(...color2);
  const lighter = Math.max(l1, l2);
  const darker = Math.min(l1, l2);
  return (lighter + 0.05) / (darker + 0.05);
}

// Örnek kullanım
const backgroundColor = [255, 255, 255]; // Beyaz
const textColor = [0, 0, 0]; // Siyah
const contrastRatio = getContrastRatio(backgroundColor, textColor);
console.log(`Kontrast oranı: ${contrastRatio.toFixed(2)}:1`);

3. CSS ile Renk Kontrastı Uygulama

Yüksek kontrastlı bir renk şeması oluşturmak için CSS değişkenlerini kullanabilirsiniz:


:root {
  --background-color: #FFFFFF;
  --text-color: #333333;
  --link-color: #0000EE;
  --visited-link-color: #551A8B;
}

body {
  background-color: var(--background-color);
  color: var(--text-color);
}

a {
  color: var(--link-color);
}

a:visited {
  color: var(--visited-link-color);
}

/* Yüksek kontrastlı mod için */
@media (prefers-contrast: high) {
  :root {
    --background-color: #000000;
    --text-color: #FFFFFF;
    --link-color: #00FFFF;
    --visited-link-color: #FF00FF;
  }
}

4. Renk Körü Kullanıcılar için Optimizasyon

Renk körü kullanıcılar için sadece renge değil, aynı zamanda şekil ve desenlere de güvenin:


<style>
.error-message {
  color: #FF0000; /* Kırmızı */
  background-image: url('error-pattern.png');
  padding-left: 20px;
}

.success-message {
  color: #008000; /* Yeşil */
  background-image: url('success-pattern.png');
  padding-left: 20px;
}
</style>

<p class="error-message">Hata: Form eksik dolduruldu.</p>
<p class="success-message">Başarılı: Formunuz gönderildi.</p>

5. Dinamik Kontrast Ayarlama

Kullanıcılara kendi kontrast ayarlarını yapma imkanı sunabilirsiniz:


<div id="contrast-controls">
  <button onclick="adjustContrast('high')">Yüksek Kontrast</button>
  <button onclick="adjustContrast('normal')">Normal Kontrast</button>
</div>

<script>
function adjustContrast(level) {
  const root = document.documentElement;
  if (level === 'high') {
    root.style.setProperty('--background-color', '#000000');
    root.style.setProperty('--text-color', '#FFFFFF');
  } else {
    root.style.setProperty('--background-color', '#FFFFFF');
    root.style.setProperty('--text-color', '#333333');
  }
}
</script>

6. SVG Kullanımı

SVG'ler, yüksek kontrastlı modlarda bile net görünen grafikler oluşturmak için idealdir:


<svg width="100" height="100" viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="40" stroke="currentColor" stroke-width="4" fill="none" />
  <path d="M30 50 L45 65 L70 40" stroke="currentColor" stroke-width="4" fill="none" />
</svg>

<style>
svg {
  color: var(--text-color);
}
</style>

7. Metin Boyutu ve Ağırlığı

Metin boyutu ve ağırlığı da kontrast algısını etkiler:


<style>
body {
  font-size: 16px;
  line-height: 1.5;
}

h1, h2, h3 {
  font-weight: bold;
}

@media (prefers-contrast: high) {
  body {
    font-size: 18px;
    line-height: 1.6;
  }
}
</style>

8. Kontrast Kontrolü için JavaScript Kullanımı

JavaScript ile dinamik olarak renk kontrastını kontrol edebilir ve ayarlayabilirsiniz:


function ensureContrast(bgColor, textColor, minRatio = 4.5) {
  let contrast = getContrastRatio(bgColor, textColor);
  if (contrast < minRatio) {
    // Kontrast yetersizse, metin rengini ayarla
    textColor = adjustColorForContrast(bgColor, textColor, minRatio);
  }
  return textColor;
}

function adjustColorForContrast(bgColor, textColor, targetRatio) {
  // Bu fonksiyon, hedef kontrast oranına ulaşana kadar
  // metin rengini kademeli olarak açar veya koyulaştırır
  // (Bu fonksiyonun tam implementasyonu daha karmaşık olacaktır)
}

// Kullanım örneği
const bgColor = [255, 255, 255]; // Beyaz arka plan
let textColor = [200, 200, 200]; // Açık gri metin

textColor = ensureContrast(bgColor, textColor);
console.log('Ayarlanmış metin rengi:', textColor);

Sonuç

Görme bozukluğu olan kullanıcılar için renk kontrastı optimizasyonu, web erişilebilirliğinin kritik bir bileşenidir. Bu teknikleri uygularken şu noktaları unutmayın:

  • Her zaman WCAG standartlarına uygun tasarım yapın.
  • Sadece renge değil, şekil ve metinsel içeriğe de güvenin.
  • Kullanıcılara kendi kontrast ayarlarını yapma imkanı sunun.
  • Düzenli olarak erişilebilirlik testleri yapın ve gerçek kullanıcılardan geri bildirim alın.
  • Renk kontrastının yanı sıra, font boyutu, satır aralığı ve yazı tipi seçimi gibi diğer faktörleri de göz önünde bulundurun.
  • Mobil cihazlarda da yüksek kontrast ve okunabilirlik sağladığınızdan emin olun.

Bu yaklaşımları benimseyerek, görme bozukluğu olan kullanıcılar da dahil olmak üzere tüm ziyaretçileriniz için daha erişilebilir ve kullanıcı dostu bir web deneyimi yaratabilirsiniz. Erişilebilir tasarım, sadece görme bozukluğu olanlar için değil, tüm kullanıcılar için daha iyi bir deneyim sağlar.