- CSS
contrast-color() membuat browser memilih warna teks hitam atau putih sesuai warna yang sering berubah, seperti latar tombol, sehingga mengurangi beban mengelola pasangan warna secara terpisah
- Jika warna acuan diberikan seperti
color: contrast-color(var(--button-color));, pilihan yang menghasilkan kontras lebih besar dihitung ulang mengikuti perubahan warna latar
- Saat ini Safari Technology Preview memakai algoritme kontras WCAG 2, sehingga pada latar
#317CFF ia memilih teks hitam, meski menurut persepsi manusia putih bisa terlihat lebih natural
- Fitur ini tidak otomatis menjamin aksesibilitas; validasi desain seperti palet, ukuran teks, ketebalan font, dan
prefers-contrast tetap diperlukan
- CSS Working Group menyediakan fitur ini dalam lingkup terbatas sebagai pilihan hitam/putih hingga diskusi algoritme kontras WCAG 3 selesai; alat pemilihan warna yang lebih kompleks dapat diperluas kemudian
Beban manajemen warna yang dikurangi oleh contrast-color()
- Saat membuat tombol dengan berbagai warna latar di situs web atau aplikasi web, teks perlu dibuat putih jika latarnya gelap, dan hitam jika latarnya terang
- Sebelumnya,
--button-color dan --button-text-color harus didefinisikan bersama untuk mengelola pasangan warna, dan dalam proyek besar atau lingkungan dengan banyak tim, menjaga kombinasi tetap akurat secara terus-menerus sulit dilakukan
contrast-color() membuat browser memilih warna dengan kontras lebih besar antara hitam atau putih ketika warna acuan diberikan di CSS
color: contrast-color(purple);
- Pada tombol, variabel warna latar dapat diterapkan bersama
contrast-color()
button {
background-color: var(--button-color);
color: contrast-color(var(--button-color));
}
- Dengan cara ini, cukup mendefinisikan satu warna latar, dan warna teks akan ditentukan oleh browser
Menurunkan warna untuk tiap status dari satu variabel
- Jika dipakai bersama Relative Color Syntax, warna hover dapat dibuat dari warna tombol dasar, dan warna teks untuk tiap status juga dapat dihitung dengan
contrast-color()
:root {
--button-color: purple;
--hover-color: oklch(from var(--button-color) calc(l + .2) c h);
}
button {
background-color: var(--button-color);
color: contrast-color(var(--button-color));
text-box: cap alphabetic; /* vertically centers the text */
}
button:hover {
background-color: var(--hover-color);
color: contrast-color(var(--hover-color));
}
Hasil janggal dari perhitungan berbasis WCAG 2
contrast-color() tidak otomatis menyelesaikan semua masalah kontras aksesibilitas
- Beberapa warna latar mungkin tidak menghasilkan kontras yang cukup dengan hitam maupun putih, sehingga perlu diperiksa oleh desainer, developer, dan tester
- Per Mei 2025, implementasi Safari Technology Preview memakai algoritme WCAG 2
- Pada latar biru
#317CFF, WCAG 2 menghitung kontras teks hitam sebesar 5.45:1
- Pada latar yang sama, kontras teks putih dihitung sebesar 3.84:1
contrast-color() memilih hitam karena angkanya lebih besar
- Menurut persepsi manusia, putih bisa terlihat lebih baik pada kombinasi ini, dan algoritme kontras warna WCAG 2 sudah lama dikritik
Diskusi algoritme kontras yang berlanjut di APCA dan WCAG 3
- Accessible Perceptual Contrast Algorithm(APCA) adalah salah satu kandidat yang dapat dimasukkan ke WCAG 3
- APCA Contrast Calculator menilai teks hitam pada latar
#317CFF sebagai Lc 38.7, dan teks putih sebagai Lc -70.9
- Dalam skor APCA, angka negatif berarti teks lebih terang daripada latar
- Besaran kontras dibandingkan sebagai 38.7 dan 70.9 tanpa memperhitungkan tanda
- Pada hasil ini, kontras teks putih lebih tinggi
- APCA lebih menekankan kontras berbasis persepsi dibanding rasio matematis sederhana, serta mencerminkan bahwa manusia tidak mempersepsikan kontras secara linear menurut warna dan kecerahan
- Standar CSS masih mewajibkan penggunaan algoritme yang ada, tetapi menyertakan catatan bahwa algoritme kontras lain dapat ditambahkan di masa depan
- Algoritme apa yang akan digunakan di WCAG 3 dan bagaimana lisensi algoritme kandidat ditangani masih terus dibahas
Kondisi yang perlu ikut diperiksa dalam desain nyata
- Memilih warna yang lebih baik dengan
contrast-color() berbeda dengan menjamin kontras yang cukup
- Terutama pada warna bernada menengah, perbedaan hasil antaralgoritme bisa menjadi besar
- Untuk pengguna yang menginginkan kontras lebih tinggi, kueri media
prefers-contrast dapat digunakan bersama
@media (prefers-contrast: more) {
/* styling with more contrast */
}
- Dalam contoh,
#2DAD4E digunakan sebagai warna latar tombol merek untuk situs web persemaian pohon
- Menurut APCA, kontras dengan teks putih adalah Lc -60.4
- Apakah nilai ini cukup bergantung pada ukuran teks dan ketebalan font
- APCA memakai satu skor dari Lc -108 hingga 106, bukan rasio WCAG 2
- APCA Readability Criterion memberikan target level Bronze, Silver, dan Gold untuk membantu memilih ukuran dan ketebalan huruf
- Dalam perhitungan contoh, kombinasi teks putih dan
#2DAD4E berfungsi untuk teks 24px dengan font-weight 400 atau lebih tinggi, sementara jika memakai font-weight 300 diperlukan minimal 41px
- Untuk pengguna yang meminta kontras lebih tinggi, warna terpisah dapat ditentukan untuk mode terang dan mode gelap
- Mode terang: hijau yang lebih gelap dan teks putih, Lc -76.1
- Mode gelap: hijau yang lebih terang dan teks hitam, Lc 75.2
--button-color: #2DAD4E; /* brand green background */
@media (prefers-contrast: more) {
@media (prefers-color-scheme: light) {
--button-color: #419543; /* darker green background */
}
@media (prefers-color-scheme: dark) {
--button-color: #77CA8B; /* lighter green background */
}
}
button {
background-color: var(--button-color);
color: contrast-color(var(--button-color));
font-size: 1.5rem; /* 1.5 * 16 = 24px at normal zoom */
font-weight: 500;
}
- Di lingkungan saat ini, algoritme WCAG 2 menggerakkan
contrast-color(), sehingga mungkin sulit dipakai untuk situs web contoh ini
- Pada proyek dengan warna merek hijau yang lebih gelap dan pilihan hitam/putih yang keluar dengan benar, fitur ini masih dapat berguna sekarang
contrast-color() sangat membantu saat mendefinisikan warna untuk berbagai status atau opsi seperti enabled/disabled, light/dark mode, dan prefers-contrast
Alasan awalnya dibatasi pada pilihan hitam/putih
- Saat ini
contrast-color() jauh lebih disederhanakan dibanding color-contrast() yang pernah ada di Safari Technology Preview 122
- Di tengah diskusi algoritme kontras WCAG 3 yang belum selesai, CSS Working Group memutuskan untuk terlebih dahulu melanjutkannya sebagai alat yang hanya memilih hitam atau putih yang kontras dengan warna acuan
- Jika pilihan dikunci ke hitam/putih, kemungkinan situs web rusak ketika algoritme WCAG 2 berubah nanti menjadi lebih kecil
- Ke depannya, alat yang lebih kuat dapat muncul, seperti browser memilih dari daftar warna kustom atau menentukan tingkat kontras yang diinginkan
contrast-color() dapat digunakan bukan hanya untuk warna teks, tetapi juga pada berbagai properti yang menentukan warna, seperti latar dan border
Belum ada komentar.