Gereksinimler ve Ön Hazırlık
Bu projeyi hayata geçirmek için herhangi bir kütüphaneye veya framework'e ihtiyaç duymazsınız. Modern bir tarayıcı (Chrome, Firefox, Edge veya Safari) ve bir kod editörü (VS Code gibi) yeterlidir. Projenin 2026 standartlarına uygun olması için CSS değişkenlerini (Custom Properties) kullanacağız.
- HTML5 standartlarına uygun semantik yapı.
- CSS3 Flexbox modülü ile hizalama.
- Erişilebilirlik için ARIA (Accessible Rich Internet Applications) rolleri.
- Özelleştirilebilirlik için CSS değişkenleri.
Adım 1: Semantik HTML Yapısının Kurulması
Breadcrumb navigasyonu, sitenin hiyerarşisini temsil eder. Bu nedenle etiketi içerisinde
- (sıralı liste) kullanmak, arama motorlarının yapıyı daha iyi anlamasını sağlar. Aşağıdaki kod bloğu, temel iskeleti oluşturur.
- Google Zengin Sonuçlar Testi: Oluşturduğunuz JSON-LD kodunu Google'ın resmi test aracına yapıştırarak yapısal hataları kontrol edin.
- Tarayıcı Konsolu: Dinamik olarak oluşturulan breadcrumb'larda JavaScript hatası olup olmadığını kontrol etmek için
console.logile veriyi izleyin. - Erişilebilirlik Denetimi: Chrome DevTools içerisindeki "Lighthouse" sekmesini kullanarak navigasyonunuzun
ariaetiketleri açısından geçerli olup olmadığını doğrulayın.
Burada aria-current="page" kullanımı, ekran okuyucuların o an hangi sayfada olduğunuzu anlaması için kritiktir. nav etiketi, bu bölümün bir navigasyon alanı olduğunu belirtir.
Adım 2: CSS ile Temel Görünüm ve Flexbox Yapılandırması
Navigasyon öğelerini yan yana dizmek ve aralarına ayırıcı (separator) eklemek için Flexbox kullanacağız. Ayrıca CSS değişkenleri ile renkleri ve boşlukları merkezi bir yerden yönetebiliriz.
:root {
--breadcrumb-color: #333;
--breadcrumb-active: #007bff;
--breadcrumb-gap: 10px;
}
.breadcrumb {
display: flex;
list-style: none;
padding: 0;
margin: 0;
}
.breadcrumb-item + .breadcrumb-item::before {
content: "/";
margin: 0 var(--breadcrumb-gap);
color: #ccc;
}
Burada ::before sözde elementi, liste öğeleri arasına otomatik olarak "/" karakterini yerleştirir. + seçicisi, ilk öğe dışındaki tüm öğelere bu ayırıcının uygulanmasını sağlar.
Adım 3: Özelleştirilebilir ve Dinamik Tasarım Stilleri
Breadcrumb navigasyonunu daha şık hale getirmek için hover efektleri ve yazı tipi düzenlemeleri ekleyelim. Bu, kullanıcı etkileşimini artırır ve arayüzün profesyonel görünmesini sağlar.
.breadcrumb-item a {
text-decoration: none;
color: var(--breadcrumb-color);
transition: color 0.3s ease;
}
.breadcrumb-item a:hover {
color: var(--breadcrumb-active);
}
.breadcrumb-item.active {
color: var(--breadcrumb-active);
font-weight: bold;
}
Bu CSS kuralları, aktif olmayan bağlantıların üzerine gelindiğinde renk değiştirmesini sağlar. Aktif olan öğe ise kalın (bold) yazılarak vurgulanır.
Adım 4: Farklı Yöntemlerin Karşılaştırılması
Breadcrumb yapısı oluştururken farklı yaklaşımlar mevcuttur. Aşağıdaki tablo, bu yöntemlerin avantaj ve dezavantajlarını özetlemektedir.
| Yöntem | Avantaj | Dezavantaj |
|---|---|---|
| Statik HTML | Hızlı yükleme, basit yapı | Dinamik içeriklerde yönetimi zor |
| CSS + Pseudo-elements | Esnek, performanslı | Karmaşık hiyerarşilerde dikkat gerektirir |
| JavaScript Injection | Tam dinamik içerik | SEO için ek yapılandırma gerektirir |
Adım 5: Dinamik Veri Entegrasyonu İçin İpuçları
Eğer bir backend dili (PHP, Python veya Node.js) kullanıyorsanız, breadcrumb yapısını bir dizi (array) üzerinden döngüye sokarak oluşturmalısınız. Bu, sayfa derinliğiniz ne olursa olsun kodun otomatik olarak güncellenmesini sağlar.
/* Örnek mantık: Breadcrumb dizisini döngüye al */
$breadcrumbs = [['Anasayfa', '/'], ['Teknoloji', '/tech'], ['Web', '/tech/web']];
foreach ($breadcrumbs as $item) {
echo '';
}
Dinamik içeriklerde, XSS (Cross-Site Scripting) saldırılarına karşı verileri ekrana basmadan önce mutlaka temizlemeyi (sanitizing) unutmayın. Kullanıcıdan gelen veriyi doğrudan HTML içine gömmek güvenlik açığı oluşturabilir.
Güvenlik Uyarısı: Dinamik içerik oluştururken, kullanıcı tarafından manipüle edilebilecek URL parametrelerini asla doğrudan HTML çıktısına yazdırmayın. Her zaman çıktı kodlama (output encoding) yöntemlerini kullanın.
Adım 6: Test Etme ve Hata Ayıklama
Breadcrumb navigasyonunuzu test ederken şu adımları izleyin:
1. Mobil cihazlarda taşma olup olmadığını kontrol edin (Gerekirse overflow-x: auto ekleyin).
2. Klavye ile tab tuşuna basarak bağlantılar arasında gezinebildiğinizi doğrulayın.
3. Google Search Console üzerinden "Yapılandırılmış Veri" (Structured Data) test aracını kullanarak breadcrumb işaretlemesinin doğru okunup okunmadığını kontrol edin.
/* Mobil uyumluluk için */
.breadcrumb {
overflow-x: auto;
white-space: nowrap;
}
Sıkça Sorulan Sorular
Breadcrumb SEO'ya katkı sağlar mı?
Evet, Google breadcrumb navigasyonunu arama sonuçlarında kullanarak sitenizin hiyerarşisini daha iyi anlamasını sağlar ve tıklanma oranlarını artırır.
Neden etiketi kullanmalıyım?
Breadcrumb bir sıralama ve hiyerarşi ifade ettiği için semantik olarak sıralı liste (ordered list) kullanımı en doğru yaklaşımdır.
Mobil cihazlarda breadcrumb çok yer kaplıyor, ne yapmalıyım?
Mobil cihazlarda sadece son iki öğeyi göstermek veya listeyi yatay kaydırılabilir (scrollable) yapmak en iyi kullanıcı deneyimi çözümüdür.
Erişilebilirlik için neye dikkat etmeliyim?
aria-label etiketi ile navigasyonun amacını belirtmek ve aktif sayfayı aria-current="page" ile işaretlemek zorunludur.
Dinamik breadcrumb için veritabanı mı kullanmalıyım?
Küçük sitelerde dizi (array) yeterlidir, ancak büyük projelerde kategori hiyerarşisini veritabanında "parent_id" mantığıyla tutmak daha sürdürülebilirdir.
Breadcrumb Yapısını JSON-LD ile Zenginleştirme
Arama motorlarının breadcrumb yapınızı daha iyi anlaması ve arama sonuçlarında "zengin sonuç" (rich snippet) olarak göstermesi için yapılandırılmış veri kullanımı kritik öneme sahiptir. HTML yapınızın yanına ekleyeceğiniz bir script bloğu, tarayıcılara hiyerarşiyi net bir şekilde anlatır.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Anasayfa",
"item": "https://siteadi.com/"
},{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://siteadi.com/blog"
},{
"@type": "ListItem",
"position": 3,
"name": "CSS İpuçları",
"item": "https://siteadi.com/blog/css-ipuclari"
}]
}
Performans Optimizasyonu ve Kod Tekrarını Önleme
Dinamik breadcrumb oluştururken her sayfada aynı HTML'i manuel olarak oluşturmak yerine, bir fonksiyon veya bileşen yapısı kullanmak performans ve bakım kolaylığı sağlar. Özellikle büyük ölçekli uygulamalarda, breadcrumb verisini merkezi bir konfigürasyon dosyasından çekmek, URL yapısı değiştiğinde tek bir noktadan güncelleme yapmanıza olanak tanır.
Breadcrumb İçin İleri Düzey CSS İpuçları
Kullanıcı deneyimini artırmak için breadcrumb öğelerine "hover" efektleri ekleyebilir veya uzun başlıkları text-overflow: ellipsis ile sınırlandırarak mobil ekranlarda taşmayı engelleyebilirsiniz. Aşağıdaki CSS snippet'i, taşan metinleri yönetmek için idealdir:
.breadcrumb-item {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 150px;
}
.breadcrumb-item:last-child {
font-weight: bold;
color: #333;
}
Breadcrumb Hata Ayıklama (Debugging) Süreci
Geliştirdiğiniz breadcrumb yapısının doğru çalışıp çalışmadığını kontrol etmek için şu adımları izleyebilirsiniz:
Profesyonel İpucu: Eğer breadcrumb yolunuz çok uzunsa (örneğin 5+ seviye), kullanıcıya sadece son 3 seviyeyi gösterip araya bir "..." (üç nokta) ekleyerek "kısaltılmış görünüm" sunmak, modern kullanıcı arayüzlerinde (UI) oldukça popüler bir yaklaşımdır.
Sonuç
Bu rehberde, Html & Css ile özelleştirilebilir bir dinamik sayfa breadcrumb navigasyonu nasıl yapılır sorusuna yanıt aradık. Semantik HTML, esnek CSS yapısı ve erişilebilirlik standartlarını birleştirerek, hem kullanıcılar hem de arama motorları için optimize edilmiş bir navigasyon yapısı kurduk. Bir sonraki adım olarak, bu yapıyı JSON-LD (Schema.org) ile zenginleştirerek Google arama sonuçlarında breadcrumb'larınızın görünürlüğünü daha da artırabilirsiniz.


Yorumlar (0)
Yorum Yaz