Tarayıcı tarafından oluşturulan kullanıcı arayüzlerinin çoğu, CSS kullanılarak bir dereceye kadar özelleştirilebilir. Modern özellikler gerektirse bile eski tarayıcılarda kontrollü azalma uygulandığından genellikle polyfill veya yedek gerekmez.
Tarayıcı kullanıcı arayüzünü (form kontrolleri, kaydırma çubukları, seçimler, hata mesajları vb.) yeniden oluşturmadan önce şunları doğrulayın:
- Tarayıcı kullanıcı arayüzü, modern CSS ile bile ihtiyaçlarınız için yeterince özelleştirilemiyorsa
- İstenen özelleştirme, yerleşik kullanıcı arayüzünü yeniden oluşturmanın dezavantajlarını (en önemlisi, yerel kullanıcı arayüzünün ücretsiz olarak sağladığı erişilebilir semantik, klavye kullanımı, IME ve AT entegrasyonunu kaybetme) haklı çıkaracak kadar önemlidir.
Yapılabilecek özelleştirmelere örnekler:
- Vurgulanan metin renklerini özelleştirmek için
::selectionsimgesini kullanın. - YAPMAYIN: İçerik metnine
user-select: noneuygulamayın. Bu, kopyala-yapıştır, çeviri araçları ve yardımcı teknolojilerin "buradan oku" hareketlerini bozar. Chrome ile sınırlayın (sürükleme tutamaçları, araç çubukları, gereksiz düğme etiketleri). - Sayfanın vurgu rengini tarayıcı tarafından oluşturulan tüm kullanıcı arayüzlerine uygulamak için
accent-colorkullanın. - Tarayıcı kullanıcı arayüzünün açık/koyu moda uyum sağlaması için
color-schemekullanın. - Kaydırma çubuğu renklerini özelleştirmek için
scrollbar-color, kaydırma çubuğu kalınlığını kontrol etmek içinscrollbar-widthkullanın. Kaydırma çubuğunun, kaydırma çubuğu yolundan belirgin şekilde farklı olmasını sağlayın (≥3:1) ve kaydırılabilir bölgelerdescrollbar-width: nonedeğerini ayarlamayın (yalnızca kaydırma işlemi tamamen başka bir olanakla değiştirildiğinde kullanın). - Geçerlilik stilini belirlemek için
:invalid/:validyerine:user-invalid/:user-validkullanın. Bunlar yalnızca kullanıcı alanla etkileşime geçtikten sonra eşleşir. Böylece, sayfa yüklenirken zorunlu boş alanların hata olarak işaretlenmesi gibi istenmeyen bir varsayılan durum önlenir.inputgeniş kapsamlı olarak hedeflenirken (ör.input:not(input[type="range"]):user-valid) aralık kaydırma çubuklarını hariç tutun. Böylece, bir kaydırma çubuğu ayarlanırken alan geçerlilik sınırları veya arka planları bu çubuğa uygulanmaz. - Düğmeler ve metin alanları (
<textarea>dahil) genellikle normal öğeler olarak biçimlendirilebilir. - Ölçeklendirme için
font-size, tipografiyi kontrol etmek için diğer metin özelliklerini kullanın.
Metin alanlarını (<input> ve <textarea>) biçimlendirme
Çoğu stil oluşturma işleminde (ör.renkler, kenarlıklar, arka planlar, tipografi vb.) bu öğeleri normal metin kapsayıcıları olarak değerlendirin.
- Giriş yer tutucularını biçimlendirmek için
:placeholder-shownve::placeholderkullanın. - Metin alanlarını içeriğe göre boyutlandırmak için
field-sizing: contenttuşunu kullanın. <textarea>öğeleri için, yatay yeniden boyutlandırmayı devre dışı bırakmak üzereresize: vertical, tüm yeniden boyutlandırmayı devre dışı bırakmak içinresize: nonekullanın.
Çoktan seçmeli kontroller (seçim, radyo düğmeleri, onay kutuları)
- Açılır listede sunulan birçok seçenekten birini belirlemek için:
<select>+appearance: base-select+::picker(select)tuşlarını kullanın. Daha fazla bilgi için Markalı Seçim Stili başlıklı makaleyi inceleyin. - Sayfada satır içi olarak yerleştirilmiş birden fazla seçenek arasından bir veya daha fazlasını seçme: Her seçenek için
<label>içinde bir<input type=checkbox>veya<input type=radio>kullanın.label:has(:checked)üzerinden stil oluşturun. - İşaretli durumu çizmek için
appearance: none+ oluşturulan içerik (::before/::after) veya arka plan resimleri aracılığıyla onay kutularını, radyo düğmelerini ve anahtarları stillendirin.
Metin içermeyen <input> (düğmeler, kaydırma çubukları, dosya girişleri vb.)
- Dosya girişleri: Düğmeyi biçimlendirmek için
::file-selector-buttonkullanın. <input>,button,submitveyaresettypeile kullanılmamalıdır. Bunun yerine<button>kullanın ve normal bir öğe olarak biçimlendirin.- Kaydırma çubukları: Daha ayrıntılı kontrol için
appearance: none+ thumb sözde öğelerini (::-webkit-slider-thumb,::-moz-range-thumbvb.) ve track sözde öğelerini (::-webkit-slider-runnable-track,::-moz-range-trackvb.) kullanın.