17 puan yazan GN⁺ 2024-04-18 | 3 yorum | WhatsApp'ta paylaş
  • Birçok şirketin uygulamasında metin, ikon gibi UI öğeleri düzgün şekilde ortalanmış değil
  • CSS’de flex ve grid kullanıldığında ortalama kolayca yapılabilmesine rağmen
display: flex  
justify-content: center /* yatay ortalama */  
align-items: center /* dikey ortalama */  

veya

display: grid  
justify-items: center /* yatay ortalama */  
align-items: center /* dikey ortalama */  

Ortalamayı zorlaştıran etkenler

  • Font metrikleri önemli bir rol oynuyor. Popüler fontların çoğunda bounding box tam oturmuyor ve boşluklar bulunduğu için ortalamak zorlaşıyor
  • line-height ayarının etkisi nedeniyle farklı container’larda bulunan iki öğeyi hizalamak neredeyse imkânsız oluyor
  • Bir ikonu metnin yanına hizalamak da çok zor bir iş. CSS’in vertical-align özelliğiyle ikonlar anlamlı biçimde hizalanamıyor
  • İkonların font dosyasına gömülerek kullanıldığı icon font’larda boyut ve padding ayarı yapılamadığı için hizalama daha da zorlaşıyor
  • Tasarımcılar da ikonun biçimini hesaba katmadan mekanik biçimde ortalama yapma hatasına düşebiliyor
  • Yatay hizalama da yeterince özen gösterilmezse yanlış olabilir

Çözüm yolları

Tasarımcılar

  • Fontun bounding box’ı metne tam oturacak şekilde ayarlanırsa ortalama çok daha kolay hale gelir
  • Figma bu özelliği destekliyor (varsayılan değil)
    • Vertical Trim : Cap Height to baseline

Font tasarımcıları

  • Font metrikleri, ascender ile descender arasındaki alan cap-height’ın 2 katı olacak şekilde ayarlanırsa geliştiriciler daha kolay ortalama yapabilir
  • Gerçek ascender/descender değerlerini sınıra kadar uzatmak gerekmez; yalnızca sayısal değerlerin uyması yeterlidir

Web geliştiricileri

  • Hangi fontun kullanılacağını önceden bilmek gerekir (font fallback olduğunda çalışmaz)
  • Font metrikleriyle hesaplanan padding-bottom değeri eklenerek dikey ortalama düzeltilebilir
  • İkonlar da vertical-align: baseline verilerek ve font metrikleri ile ikon boyutuna göre hesaplanan değer kadar aşağı kaydırılarak hizalanabilir

Icon font’lar

  • Icon font kullanmayı lütfen bırakın ve normal görsel formatları kullanın
  • Genişliği ve yüksekliği olan iki dikdörtgeni hizalamaktan daha kolay bir şey yoktur

Görsel düzeltme

  • Geliştiriciler yalnızca matematiksel olarak kusursuz dikdörtgenleri hizalayabilir. Manuel düzeltme gerektiren durumlarda, ikonlar dikdörtgenin içine görsel olarak dengeli yerleştirilmelidir

GN⁺ görüşü

  • Bu, küçük detaylara gösterilen ilginin UI kalitesini büyük ölçüde artırabileceğini gösteriyor. Çok önemsiz gibi görünen yalnızca bir ortalama detayı bile genel hissi değiştirebilir
  • Sadece "tasarımcı tasarımla, geliştirici de sadece uygulamayla ilgilenir" anlayışıyla değil, birbirlerinin alanını anlayıp işbirliği yaparak iyi sonuç alınabileceğine işaret ediyor
  • En baştan tarayıcılar arasında render farkı oluşmaması ve tasarımcının niyetinin daha kolay uygulanabilmesi için, tasarım aşamasından itibaren font metriklerini ayarlayıp taslağı buna göre hazırlamak iyi olabilir
  • Apple, MS, Google gibi büyük şirketlerin ürünlerinde bile bu sorun görülebiliyor; ama çoğu insan bunu fark etmeden geçecek kadar ilgisiz görünüyor. Bu da ne kadar titiz detay odaklı üretim yapmanın önemli olduğunu gösteriyor
  • Özellikle son dönemde UI test otomasyon araçlarının kullanılmasıyla, insan gözüyle tek tek kontrol etme süreci atlandığından bu tür sorunlar daha sık hale gelebilir; bu yüzden dikkat etmek gerekiyor

3 yorum

 
dormis 2024-04-19

Mekanik olarak ortalamak gerçekten iyi mi, onu da düşünmek gerekiyor. Farenin sağ ve solunun tam simetrik olması yerine ergonomik olarak biraz farklı tasarlanmasının daha rahat olması gibi, bunun da genel kullanılabilirliğe bakılarak karar verilmesi gereken bir unsur olduğunu düşünüyorum.

 
jokuhus 2024-04-23

Sanırım kilit nokta, niyetten farklı bir sonucun ortaya çıkabilmesi. Örneğin fare tıklamasının ekranda ok ucunda değil de kuyruk kısmında gerçekleşmesi gibi bir durum.

 
GN⁺ 2024-04-18
Hacker News görüşü

Özet:

  • CSS düzeni birçok sorun barındırıyor ve CAD programları, oyun motorları, animasyon programları gibi 2D/3D araçlar daha iyi düzen motorları ve kısıt sistemi sunuyor
  • Hizalama için tek bir doğru cevap yok; tasarımcılar her zaman şikayet edecek bir şey bulabiliyor
    • Kesin margin ölçüleri kullanılsa bile görsel olarak asimetrik görünebilir
    • Harf biçimlerine göre ayarlansa bile baseline ya da x-height gibi ölçülere uymadığı söylenebilir
  • Yazı tipi render etme davranışı işletim sistemi ve tarayıcıya göre değiştiği için, bir ortamda kusursuz hizalanan şey başka bir ortamda kayabilir
  • Batı dışı yazı tiplerinde bu daha da zordur
  • Gerçek dünyada da hizalama zor bir problemdir (NCAA basketbol sahası çizimi örneği)
  • Hizalama ölçütü, bakan kişiye göre değişir
  • CSS justify ve align özelliklerini etkileşimli olarak deneyebileceğiniz bir demo sitesi tanıtılıyor
  • Metnin yanına ikon yerleştirirken yalnızca yazı tipine değil, metnin kendisinin "tipografik merkezi"ne göre hizalama yapılması gerektiği yönünde bir tasarımcı tavsiyesi vardı; ancak pratikte uzlaşma gerekti
  • CSS'in tabloların işlevselliğini yakaladığı yıllardır iddia edilse de hâlâ tam anlamıyla ulaşabilmiş değil