CSS’in yeni özellikleri bazen çığır açan nitelikte (anchor positioning, :has() seçicisi, vb.) olurken bazen yazıma yardımcı kurallar (iç içe yazım, @property) oluyor bazen de genel kullanılan kullanıcı deneyimi arttırıcı özellikleri oluyor. field-size özelliği genel kullanıcı deneyimini arttırıcı bir özellik. field-size özelliği genelde javascript ile çözdüğümüz bir ihtiyacı karşılıyor. Artık CSS ile kolayca bu ihtiyacımızı giderebiliyoruz. Genelde textarea alanlarına yazılan uzun içerikler için kullanıcıya sunulan dar alanları büyütmek için kullandığımız kullanıcı metin girdikçe uzayan textarea alanları için tanımlanmış bir özellik.

Bu durum masaüstünde daha az sinir bozucuyken mobilde daha sinir bozucu bir durum oluşturuyor.

Javascript ile yazılmış bir sürü script örneği ve makalesi mevcut bu durumu çözen ancak bir satır CSS kodu ile çözmenin hazzını hiçbiri vermiyor. :)

Ben yukarıda textarea için dediysem de uygulamada input, textarea ve select elemanlarına uygulanabiliyor. Örnekler yardımıyla daha iyi anlaşılacak.

Yukarıdaki örnekte normal durumda textarea içinde içerik girdikçe veya enter’a bastıkça sağda kaydırma çubuğu çıkarken field-size tanımı yapılan textarea‘da içerik girdikçe veya enter’a basıldıkça textarea otomatik olarak artmaktadır.

input içinde bir örnek yapalım.

Yukarıdaki örnekte normal input‘ta içeriği uzattığımızda içerik sağa doğru kayarken field-sizing: content; uygulanan örnekte içerik girildikçe input genişliyor.

Bir diğer uygulanan elemanda <select>

<select> farklılıkları normalde içeriğe göre genişlik sabit olurken field-sizing: content; tanımlı select’te içeriği uzun olanda genişlik uzuyor kısa olanda kısa kalıyor.

Blink (Chrome, Edge, Opera, Arc) tabanlı tarayıcılarda bu özelliğin desteği var. Firefox desteğinin yakında geleceği haberi geldi. Safari ekibinin de geliştirme aşmasında olduğunu biliyoruz.

Kalın sağlıcakla.

Kaynaklar

Yaşlandıkça böyle ihtiyaçlar doğuyor galiba. Belki ihtiyacı olan olur diye buraya not edeyim. Chrome Dev Tools gibi araçlarda başlangıçtaki görünüm küçük kalabiliyor. Benim için küçük mesela :)

Yazı boyutlarını büyütmek için Cmd + + and Cmd + - (Windows’ta Cmd yerine Ctrl kullanın). Ancak bu kısayol İngilizce klavye için Türkçe klavyelerde bunu yapmak için

Büyütmek için: cmd + . veya cmd + shift + p ile açılan menüye zoom inyazarakta oluyor. Küçültmek için: cmd + - Başlangıç değerine dönmek için: cmd + 0

Safari

Büyütmek için: Kısayol bulamadım ancak Geliştirme aracının sağ üst köşesindeki ayarlar ikonuna tıklayıp gelen General sekmesinde en altta zoom seviyesini belirleyebiliyoruz. Küçültmek için: cmd + - Başlangıç değerine dönmek için: cmd + 0

Firefox

Büyütmek için: Adres barına about:config yazıp, arada gelen riskleri kabul ediyorum evet deyip sonra gelen arama kısmında devtools.toolbox.zoomValue yazıp gelen değeri 1.5 (kendi tercihinize göre değiştirin) yaparak hallettim. Küçültmek için: cmd + - Başlangıç değerine dönmek için: cmd + 0

Bir diğer seçenekte İngilizce klavyeye geçip standart kısayolları da kullanabilirsiniz.

Kaynaklar

Uzun içerikli yapıları daha az yer kaplayacak şekilde ve daha işlevsel kullanmak için genelde akordiyon yapılarını kullanırız. Uzun süredir kullanıla gelen bu bileşenlerin genelde işlevselliğini javascript ile yapıyoruz. HTML ve CSS ile yapılan akordiyonlar için son günlerde gelen name attribute ile işlevsellik yönünden eksik kalan kısım tamamlandı.

name attribute tam olarak ne sağlıyor?

<details> ve <summary> kullanımı ile oluşturduğumuz akordiyonlar başlığa tıkladığımızda açılan detay içeriği gösteriliyor. Biz daha çok başlığa tıklandığında açılıyor ve aynı zamanda açık olan başka içerik kapanıyor.

Örneklerde daha iyi anlarız.

Örnekleri trendyol’da geliştirdiğimiz baklava tasarım sisteminde uyguladığımız tasarımları kullandım. Bu arada görmeyenler için baklava github linkini de buraya ekliyeyim. https://github.com/Trendyol/baklava/

Bir diğer not da baklava design system açık kaynak bir proje katılıp katkı verebileceğiniz güzel bir proje olduğunu düşünüyorum. Katkılarınızı bekleriz.

Mevcut akordiyon (checkbox gibi)

Mevcut durumda kullanılan ve tarayıcı desteği gayet iyi olan tip bu.

Yukarıdaki örnekte sadece HTML ve CSS kullandık. Kendi stillerimizi uyguladık sadece.

name ile oluşturulan akordiyon (radio gibi)

Chrome 120 ve Safari 17.2 ile birlikte gelen name özniteliği desteği ile artık tıklanan ögenin dışındakileri kapatan akordiyonları da yapabileceğiz.

Eğer Chrome ve Safari’nin developer sürümlerini yüklemediyseniz yukarıdaki kod sizde bir öncekiyle aynı gözükecektir.

Açık gelen akordiyon

Başlangıç durumunda bir akordiyon elemanının açık gelmesini istiyorsanız. Açık gelmesini istediğiniz akordiyon elemanında open öz niteliğini eklemeniz yeterli. Örnek: <details open>

Örnekte görüldüğü gibi ikinci öge açık olarak belirtildiği için açık gelmiştir.

Sonuç

W3C’nin tarayıcıların bünyesindeki bileşenleri arttırma ve geliştirme çabalarını takdir ile karşılıyorum. Her projede ayrı ayrı kod yazmaktan ve uğraşmaktan kurtarıyor, erişebilirlik sorunlarını çözüyor. Standart bir tasarım desteği sunuyor. Umarım bir çok UI kütüphanesindeki bileşenler bu şekilde eklenir.

Kalın sağlıcakla.

Kaynaklar

Mevcut UI kütüphanelerinde akordiyon