- Browser-browser utama sedang menjalankan pembaruan yang mengubah gaya default (gaya UA) untuk tag
<h1>
- Perubahan ini terutama memengaruhi
<h1> yang digunakan di dalam section, article, nav, aside, dan elemen serupa yang bertingkat
- Developer perlu berhati-hati karena perubahan ini dapat menyebabkan perubahan gaya yang tidak terduga pada situs atau peringatan Lighthouse
Apa yang berubah
- Spesifikasi HTML dulu sempat memiliki aturan bernama "outline algorithm" yang membuat
<h1> tampil secara visual seperti <h2>, <h3>, dan seterusnya sesuai jumlah elemen sectioning yang bertingkat
- Misalnya,
section > h1 dirender seperti <h2>, dan section > section > h1 dirender seperti <h3>
- Hal ini tidak tercermin di accessibility tree yang sebenarnya, dan ditafsirkan berbeda oleh tiap alat sehingga menimbulkan kebingungan
- Pada akhirnya algoritma ini dihapus dari spesifikasi HTML pada 2022, dan kini browser juga sedang menghapus gaya UA yang terkait dengannya
Contoh gaya UA browser lama
- 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 }
Contoh struktur HTML
<body>
<h1>Level 1</h1>
<section>
<h1>Level 2</h1>
<section>
<h1>Level 3</h1>
<section>
<h1>Level 4</h1>
</section>
</section>
</section>
</body>
Perubahan yang bisa diharapkan dan waktunya
<h1> kini tidak lagi otomatis berubah gaya hanya karena berada di dalam elemen section yang bertingkat
- Gaya UA akan menerapkan gaya yang sama untuk semua
<h1>
- Lighthouse akan menampilkan peringatan jika
<h1> tidak memiliki font-size yang didefinisikan
- Peringatan yang ditampilkan:
H1UserAgentFontSizeInSection
Firefox
- Mulai 31 Maret 2025, Firefox Beta 138 mulai menggulirkan perubahan gaya ke 50% pengguna desktop
- Di Firefox Stable 138, perubahan digulirkan ke 5% pengguna, lalu direncanakan rollout penuh hingga versi 140
- Di Firefox 136 ke atas, peringatan konsol ditampilkan jika
font-size atau margin tidak didefinisikan
- Cara mengubah pengaturan: di
about:config, setel nilai layout.css.h1-in-section-ua-styles.enabled ke false
Chrome
- Mulai Chrome 136, peringatan muncul jika
<h1> menggunakan gaya default yang diperkecil
- Ini dapat memengaruhi skor "Best Practices" di Lighthouse
Safari
- Belum ada pembaruan spesifik atau pelacakan bug, tetapi pembaruan serupa juga diperkirakan akan hadir di WebKit
Cara memperbaiki peringatan Lighthouse
- Lighthouse menampilkan peringatan jika
<h1> tidak memiliki font-size, berdasarkan peringatan Chromium DevTools
- Untuk mencegahnya, Anda perlu menetapkan gaya untuk
<h1> secara eksplisit
Contoh gaya
h1 {
margin-block: 0.67em;
font-size: 2em;
}
- Untuk menghindari specificity (prioritas), gunakan
:where()
:where(h1) {
margin-block: 0.67em;
font-size: 2em;
}
Checklist ringkasan
- Jangan bergantung pada gaya default browser
- Gunakan
<h2>, <h3>, dan seterusnya secara tepat untuk mengekspresikan hierarki secara eksplisit
- Tentukan
font-size dan margin secara eksplisit untuk semua <h1>
- Perbarui CSS reset agar mencerminkan perubahan ini
- Periksa peringatan melalui Lighthouse dan DevTools
- Rujuk dokumentasi terkait di MDN untuk mencerminkan isi terbaru
Materi terkait
1 komentar
Komentar Hacker News
Di versi stabil Firefox 138, ini akan dirilis ke 5% pengguna, lalu ada rencana diperluas menjadi 50%
Latar belakang historis dari algoritma outline yang diadopsi W3C menarik
Ada komentar yang penasaran sejak kapan perilaku H1 dimasukkan ke dalam spesifikasi
Ada komentar yang mengatakan belum pernah memikirkan secara mendalam perilaku elemen section (
<section>,<aside>,<nav>,<article>) dan tag<h1>Disayangkan algoritma outline tidak berhasil
<h1>dan memberinya makna sebagai "judul tingkat tertinggi dalam konteks saya", bukan dalam konteks global dokumenAda pendapat bahwa tag
<h1>harus tetap<h1>tanpa memandang posisinyaAda pendapat bahwa karena kompleksitas seperti ini, banyak desainer memakai
<div>untuk segala halrole, aksesibilitas juga bisa dipertahankanAda pendapat bahwa header di HTML agak konyol
<section>adalah ekspresi yang lebih baik