focus-visible

Bu tanımın ortaya çıkışının sebebi: Geliştiriciler tarayıcıların otomatik tanımladığı focus tanımlarının yapılan tasarıma uymadığı veya tam olarak ne amaçla kullanıldığını bilmediği için silmesi ve bunun sonucu olarak erişilebilirlik sorunlarının çıkması.

.link:focus {
	outline: none;
}

Kodunu yazarak tanımlı olan odaklanma halindeki outline çizgisini kaldırıyorduk. Tabi bu  erişilebilirlik için ciddi sorunlar oluşturuyor. Birçok site erişilebilirliği önemsemediği için yukarıdaki gibi kodlar yazarak işine devam ediyor.

Standart geliştiriciler bu durumları engellemek için yeni bir tanım geliştirdiler. focus-visible özelliği. focus-visible özelliğinin focus'tan farkı kullanıcının kullandığı araca göre etki ediyor olması. Kullanıcı mouse ile geldi ise farklı klavyeden geldi ise farklı stil tanımlamamıza olanak sağlıyor.

Aşağıdaki login formu konuyu daha iyi anlamamıza yardımcı olacaktır.

İlk örnekte form içindeki tüm elemanlara focus tanımladık. Klavye ile de mouse ile de geldiğimizde aynı etkiyi yapıp outline çizgisini gösterdi.

İkinci örnekte ise focus ve focus-visible ayrı ayrı tanımladık. İlk örnekte tüm elemanlar her türlü outline gösterirken, ikinci örnekte sadece klavye ile odaklandığımızda outline gösterilmektedir.

.login-form :focus:not(:focus-visible) {
  outline: none;
}

.login-form :focus-visible {
  outline: 3px solid orange;
}

Burada şöyle bir kural var:  Bir HTML elemanı klavye ile giriş alanı ise focus-visible tanımı olsa dahi outline çizgileri gösterilmeye devam ediyor. İkinci örnekte ki input[type="text"] elemanı bundan dolayı mouse ile de outline çizgisi göstermektedir.

En son Safari desteğinin de gelmesiyle tarayıcı desteği konusunda sorunu kalmadı.

Kaynaklar

Read more

CSS'de lightdark() fonksiyonuyla kolayca koyu / açık mod yazımı

CSS'de lightdark() fonksiyonuyla kolayca koyu / açık mod yazımı

Bir önceki yazımda bahsettiğim gibi CSS'in yeni özelliklerinin bazıları çığır açan özellikler, bazıları kulllanıcı deneyimini iyileştirme yönünde özellikler bazıları da lightdark() fonksiyonu gibi yazım kolaylığı sağlayan özellikler. lightdark() fonksiyonu mevcut uyumlu web yazımındaki büyük sorun olan aşağıdaki kullanımı daha anlaşılır ve düzenli hale getirmeye yarıyor. :root { color-scheme: light

By Fatih Hayrioğlu