Hazır bir palet yerine OKLCH ile jeton tasarladım
· 1 dk okuma
- tasarim-sistemi
- css
- erisilebilirlik
Hazır bir renk paleti seçmek yerine neden kendi jeton sistemimi kurduğumu anlatayım.
Hex neden yetmiyor
#808080 ile #0080ff sayısal olarak aynı "orta" bölgede dursa da gözde aynı
koyulukta görünmüyor. Hex, üç kanalı (kırmızı, yeşil, mavi) birlikte
kodladığı için "bu rengi biraz daha açık yap" demek üç sayıyı birlikte tahmin
etmek anlamına geliyor.
OKLCH'de birinci bileşen algısal açıklıktır: %48 iki
farklı renk tonunda da aynı koyulukta görünür. Bu, koyu tema karşılıklarını
tahminle değil hesapla üretmeyi mümkün kılıyor.
Jeton adları rolü anlatır
Jetonlarımı surface, ink, brand gibi işlev adlarıyla adlandırdım —
bg-amber gibi görünüş adıyla değil. Gerekçesi basit: marka rengi
değiştiğinde bg-amber adının kendisi yalan söylemeye başlar, ama bg-brand
her zaman doğru kalır.
--surface: oklch(98.8% 0.006 78);
--ink: oklch(22% 0.014 70);
--brand: oklch(52% 0.15 76);
| Jeton adı | Kullanım alanı | Örnek eşleşme |
| ------------- | ------------------------ | --------------------------- |
| surface | Sayfa arka planı | Açık temada neredeyse beyaz |
| ink | Gövde metni ve başlıklar | Koyu, ılık nötr |
| brand | Bağlantı, birincil eylem | Amber/ocher |
| line-strong | Etkileşimli öge kenarı | Form alanı çevresi |
Kontrastı elle değil betikle doğruluyorum
Kontrast tablosunu elle yazmadım; bir betik jeton değerlerinden hesaplayıp üretiyor. Elle yazılan bir tablo, jetonlar değiştiği anda sessizce yalan söylemeye başlar — betik bunu imkânsız kılıyor.
Açık temada gövde metni
16.7:1
eşik: 4.5:1
Koyu temada gövde metni
15.3:1
eşik: 4.5:1
Kapanış
Bu disiplin "tutarlılığı garanti ediyor, özgünlüğü garanti etmiyor" — ikisi ayrı işler. Jeton sistemi bana renk değiştiğinde her yerin doğru güncellendiğini garanti ediyor; rengin kendisinin "iyi bir seçim" olup olmadığına dair hiçbir şey söylemiyor. O karar ayrı bir yargı, bu yazının konusu değil.
Abdullah Balat
Kurucu ve geliştirici
Bu siteyi kuran, tasarlayan ve içeriğini yazan kişiyim. Hakkımda daha fazlası →
Yorumlar
YakındaYorum alanı henüz aktif değil; GitHub Discussions tabanlı bir sistem hazırlanıyor.
Bülten
YakındaYeni yazı ve ders yayınlandığında haber vermek için bir bülten hazırlıyorum. Kayıt formu şu an pasif; aktif olduğunda burada duyurulacak.