- Başlıca tarayıcılar,
<h1> etiketinin varsayılan stilini (UA stili) değiştiren bir güncellemeyi uygulamaya alıyor
- Özellikle iç içe geçmiş
section, article, nav, aside gibi yapıların içinde kullanılan <h1> etiketlerini etkiliyor
- Geliştiricilerin, bu değişiklik nedeniyle sitelerinde beklenmedik stil değişiklikleri veya Lighthouse uyarıları oluşabileceği için dikkatli olması gerekiyor
Neler değişiyor
- HTML spesifikasyonunda bir dönem "outline algorithm" adlı bir kural vardı; buna göre
<h1>, iç içe geçmiş sectioning öğelerinin sayısına bağlı olarak görsel olarak <h2>, <h3> gibi gösteriliyordu
- Örneğin
section > h1, <h2> gibi; section > section > h1 ise <h3> gibi render ediliyordu
- Bu durum gerçek erişilebilirlik ağacına yansımıyor, araçlar tarafından da farklı biçimlerde yorumlanarak kafa karışıklığı yaratıyordu
- Sonunda bu algoritma 2022'de HTML spesifikasyonundan kaldırıldı ve şimdi tarayıcılar da buna bağlı UA stillerini kaldırıyor
Eski tarayıcı UA stili örneği
- x h1 { font-size: 1.50em }
- x x h1 { font-size: 1.17em }
- x x x h1 { font-size: 1.00em }
- x x x x h1 { font-size: 0.83em }
- x x x x x h1 { font-size: 0.67em }
HTML yapı örneği
<body>
<h1>Level 1</h1>
<section>
<h1>Level 2</h1>
<section>
<h1>Level 3</h1>
<section>
<h1>Level 4</h1>
</section>
</section>
</section>
</body>
Beklenebilecek değişiklikler ve zamanlama
<h1>, artık iç içe geçmiş section öğelerinin içinde diye otomatik olarak farklı stillenmeyecek
- UA stili, tüm
<h1> etiketlerine aynı stili uygulayacak
- Lighthouse,
<h1> için font-size tanımlanmadığında uyarı gösterecek
- Gösterilen uyarı:
H1UserAgentFontSizeInSection
Firefox
- 31 Mart 2025'ten itibaren Firefox Beta 138'de masaüstü kullanıcılarının %50'sine stil değişikliği dağıtılmaya başlandı
- Firefox Stable 138'de önce %5'e dağıtım yapılıp ardından 140 sürümüne kadar tam yaygınlaştırma planlanıyor
- Firefox 136 ve sonrasında,
font-size veya margin tanımlı değilse konsolda uyarı gösteriliyor
- Ayarı değiştirme yöntemi:
about:config içinde layout.css.h1-in-section-ua-styles.enabled değerini false olarak ayarlayın
Chrome
- Chrome 136'dan itibaren,
<h1> varsayılan küçük stile dayanıyorsa uyarı veriliyor
- Bu durum Lighthouse'un "Best Practices" puanını etkileyebilir
Safari
- Henüz somut bir güncelleme ya da bug takibi yok, ancak WebKit tarafında da benzer bir güncelleme bekleniyor
Lighthouse uyarısı nasıl düzeltilir
- Lighthouse, Chromium DevTools uyarılarını temel alarak
<h1> için font-size yoksa uyarı gösteriyor
- Bunu önlemek için
<h1> etiketine açıkça stil vermek gerekiyor
Örnek stil
h1 {
margin-block: 0.67em;
font-size: 2em;
}
- specificity'yi (öncelik) önlemek için
:where() kullanın
:where(h1) {
margin-block: 0.67em;
font-size: 2em;
}
Özet kontrol listesi
- Tarayıcı varsayılan stillerine güvenmeyin
- Hiyerarşiyi açıkça göstermek için
<h2>, <h3> gibi etiketleri uygun şekilde kullanın
- Tüm
<h1> etiketleri için font-size ve margin değerlerini açıkça tanımlayın
- Bu değişikliği yansıtacak şekilde CSS reset'inizi güncelleyin
- Uyarıları Lighthouse ve DevTools üzerinden kontrol edin
- En güncel içerik için MDN'nin ilgili dokümantasyonuna başvurun
İlgili kaynaklar
1 yorum
Hacker News görüşleri
Firefox 138’in kararlı sürümünde kullanıcıların %5’ine dağıtılacak ve ardından %50’ye çıkarılması planlanıyor
W3C’nin benimsediği outline algoritmasının tarihsel arka planı ilgi çekici bulunuyor
H1 davranışının spesifikasyona ne zamandan beri dahil olduğunu merak eden görüşler var
Bölüm öğeleri (
<section>,<aside>,<nav>,<article>) ile<h1>etiketinin davranışı üzerine hiç derinlemesine düşünmediğini söyleyen görüşler varOutline algoritmasının başarılı olamaması üzücü bulunuyor
<h1>parçası yazıp buna belgenin genel bağlamı yerine "kendi bağlamımdaki en üst başlık" anlamını verebilmek gerektiği ifade ediliyor<h1>etiketi, bulunduğu yere bakılmaksızın<h1>olarak kalmalı görüşü varBu karmaşıklık yüzünden birçok tasarımcının her şey için
<div>kullandığı söyleniyorroleözniteliği kullanılırsa erişilebilirliğin de sağlanabileceği belirtiliyorHTML başlık yapısını biraz saçma bulan görüşler var
<section>etiketiyle ayırmanın daha iyi bir ifade olduğu söyleniyorh1veh2nin, HTML’nin diğer biçimlerinden farklı olarak açık etiketler ve bir hiyerarşi oluşturduğu belirtiliyor