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

Web Uygulamalarında Ekran Okuyucular İçin Optimizasyon Teknikleri

Bugün dijital dünyanın gizli süper kahramanları için kod yazacağız. Evet, ekran okuyuculardan bahsediyorum - o sessiz bekçiler ki, web'in karanlık köşelerini aydınlatarak herkese eşit erişim sağlarlar. Hazır mısınız? Öyleyse klavyelerinizi kuşanın, çünkü bugün ekran okuyucuları sevinçten dans ettirecek optimizasyon tekniklerini öğreneceğiz!

1. Semantic HTML: Yapısal Anlamın Şairi

Semantic HTML, ekran okuyucuların en sevdiği şiir türüdür. Her tag bir mısra, her attribute bir kafiyedir.


<!-- Eskiden, anlamsız <div> çorbası yapardık -->
<div class="header">
  <div class="nav">...</div>
</div>

<!-- Şimdi, semantik bir senfoni besteliyoruz -->
<header>
  <nav aria-label="Ana navigasyon">
    <ul>
      <li><a href="#">Ana Sayfa</a></li>
      <li><a href="#">Hakkımızda</a></li>
      <li><a href="#">İletişim</a></li>
    </ul>
  </nav>
</header>

Bu kod, ekran okuyucuların kulaklarına Mozart senfonisi gibi gelecektir. Her element, içeriğinin ne olduğunu haykırıyor!

2. ARIA: Erişilebilirliğin Gizli Sosu

ARIA attributeleri, ekran okuyucular için adeta gizli bir el işareti gibidir. "Psst, burada önemli bir şey var!" der gibidirler.


<button 
  aria-expanded="false"
  aria-controls="nav-content"
  onclick="toggleNav()">
  Menüyü Aç
</button>

<nav id="nav-content" aria-hidden="true">
  <!-- Navigasyon içeriği -->
</nav>

<script>
function toggleNav() {
  const button = document.querySelector('button');
  const nav = document.getElementById('nav-content');
  const isExpanded = button.getAttribute('aria-expanded') === 'true';
  
  button.setAttribute('aria-expanded', !isExpanded);
  nav.setAttribute('aria-hidden', isExpanded);
  button.textContent = isExpanded ? 'Menüyü Aç' : 'Menüyü Kapat';
}
</script>

Bu kod, ekran okuyuculara "Hey, bu düğme bir şeyleri açıp kapatıyor!" diye fısıldar. Artık kullanıcılar, neyin ne olduğunu Sherlock Holmes olmadan da anlayabilecekler!

3. Klavye Navigasyonu: Tab Tuşunun Zaferi

Klavye kullanıcıları için web sitenizde gezinmek, Indiana Jones'un hazine avına çıkması gibi olmamalı. Her `tab` vuruşu, yeni bir keşif olmalı!


/* CSS */
:focus {
  outline: 3px solid #4CAF50;
  box-shadow: 0 0 0 3px rgba(76, 175, 80, 0.5);
}

/* Görsel olarak gizli ama ekran okuyucular için erişilebilir */
.visually-hidden:not(:focus):not(:active) {
  clip: rect(0 0 0 0); 
  clip-path: inset(50%);
  height: 1px;
  overflow: hidden;
  position: absolute;
  white-space: nowrap; 
  width: 1px;
}

/* HTML */
<a href="#main-content" class="visually-hidden">
  Ana içeriğe atla
</a>

<!-- Sayfanın geri kalanı -->

<main id="main-content" tabindex="-1">
  <h1>Hoş Geldiniz</h1>
  <!-- Ana içerik -->
</main>

Bu kodla, klavye kullanıcıları sitenizde ninja gibi gezinebilecek. "Ana içeriğe atla" bağlantısı, onlara adeta bir ışınlanma cihazı sunuyor!

4. Alternatif Metinler: Görüntülerin Tercümanı

Resim bin kelimeye bedelse, iyi bir `alt` metni de bin piksele bedeldir!


<!-- Kötü örnek -->
<img src="cat.jpg" alt="resim">

<!-- İyi örnek -->
<img 
  src="cat.jpg" 
  alt="Turuncu bir kedi, yeşil gözlerle kameraya bakıyor ve pençesini kaldırmış sanki selam veriyor"
>

<!-- Dekoratif resimler için -->
<img src="decorative-line.png" alt="" role="presentation">

Bu `alt` metinleriyle, görme engelli kullanıcılar da kedilerin internet üzerindeki hakimiyetini hissedebilecek!

5. Canlı Bölgeler: Dinamik İçeriğin Habercisi

Dinamik içerik, ekran okuyucular için genellikle sürpriz parti gibidir - kimse ne zaman patlak vereceğini bilemez. ARIA live bölgeleri, bu sürprizleri kontrollü bir şekilde sunar.


<div id="notification" aria-live="polite" aria-atomic="true"></div>

<script>
function showNotification(message) {
  const notification = document.getElementById('notification');
  notification.textContent = message;
  
  // Bildirimi 5 saniye sonra temizle
  setTimeout(() => {
    notification.textContent = '';
  }, 5000);
}

// Kullanım
showNotification("Mesajınız başarıyla gönderildi!");
</script>

Bu kodla, dinamik bildirimler artık ekran okuyucu kullanıcıları için "Sürpriz!" diye bağırmak yerine, nazikçe "Affedersiniz, size bir haberim var" diyecek.

Herkes İçin Web

İşte böyle, erişilebilirlik savaşçıları! Bu tekniklerle artık web siteniz, ekran okuyucular için bir lunapark gibi olacak - her köşede yeni bir heyecan, her tıklamada yeni bir macera! Unutmayın, erişilebilir bir web sitesi yapmak, sadece ekran okuyucu kullanıcılarına değil, herkese fayda sağlar. Bu, Google botlarının sitenizi daha iyi anlamasından tutun da, sarhoş bir kullanıcının gece yarısı sitenizde gezinmesine kadar her durumda işe yarar! Şimdi gidin ve web'i herkes için daha erişilebilir bir yer haline getirin. Kim bilir, belki de bir gün ekran okuyucular sizin sitenizi örnek gösterip "İşte, böyle yapılır!" diyecekler. Kodlarınız semantik, ARIA'larınız açıklayıcı olsun! Ve unutmayın, her `

` öldürdüğünüzde, bir ekran okuyucu size minnettar kalacak!