CSS alanı boyutlandırma

Düzenlenebilir içeriğe sahip öğeleri otomatik olarak boyutlandırmak için tek satır kod.

field-sizing kullanılmadığında, iyi boyutlu bir giriş alanı oluşturmak için ya bir metin alanı girdisinin ortalama boyutunu tahmin etmeniz ya da kullanıcı metni girerken karakterleri sayıp öğe yüksekliğini veya genişliğini artırmak için JavaScript'i kullanmanız gerekiyordu. Diğer bir deyişle, bu kolay değildi ve bir kullanıcının girdiği içeriği takip etmeye çalışırken hata yapma eğilimindeydi.

field-sizing ile içeriğe dayalı boyutlandırmayı etkinleştirmek için bir CSS satırının olması gerekir. Bu içeriğe dayalı boyutlandırma stili, aynı zamanda bir metin alanından daha fazlası için de işe yarar!

textarea, select, input {
  field-sizing: content;
}

Spesifikasyon | Açıklama

Kısa videoları seviyor musunuz?

Wes Bos ve Jhey, Twitter'da sizi field-sizing ile tanıştıran harika bir videoya sahip.

Alan boyutlandırmadan hangi öğeler etkilenir?

field-sizing uygulamasının üzerinde çalıştığı <form> öğeleri, her biri üzerindeki etkilerinin bir özetiyle birlikte aşağıda listelenmiştir.

<textarea>

Giriş, min-inline-size olacak şekilde veya yer tutucuya sığacak şekilde daraltılır.

Kullanıcılar yazdıkça giriş, maksimum satır içi boyutuna ulaşana kadar satır içi yönde büyür. Bu noktada metin kaydırılır ve girişin blok boyutu yeni satıra sığacak şekilde büyür.

<select> ve <select multiple>

Seçim öğesi, belirlenen seçeneğe sığacak şekilde daralır.

multiple özelliğine sahip bir seçim, en geniş seçeneğe sığacak şekilde büyür ve seçenek sayısına uyacak şekilde gereken uzunlukta olur.

<input type="text">, <input type="email"> ve <input type="number">

Giriş, min-inline-size olacak şekilde veya yer tutucuya sığacak şekilde daraltılır.

Kullanıcılar yazdıkça giriş, bir max-inline-size'ye ulaşana kadar satır içi yönde büyür. Bu noktada taşma, giriş değerini kırpar.

<input type="file">

Giriş, düğmeye ve önceden doldurulmuş dosya adı metnine daraltılır.

Bir dosya yüklendiğinde, giriş, düğmeyle dosya adı metni kadar geniş hale gelir.

Sonuçları görme, test etme ve karşılaştırma

Aşağıda, her form öğesinin field-sizing ürününden etkilenen önceki ve sonraki davranışlarının etkileşimli ve minimal bir örneği verilmiştir.

Codepen'de deneyin

Yakından bakıyoruz

[placeholder] kullanılırken yer tutucu içerik haline gelir. Bu konudan daha önce bahsetmiştik. Ancak formun stilini belirlerken bilinmesi gereken önemli bir nokta olduğu için burada da belirtiliyordu. Uzun veya kısa bir yer tutucu, field-sizing: content ile girişlerin gerçek boyutunu değiştirir.

Codepen'de deneyin

Boş ve taşan stil işleme

field-sizing ürününü kullanmak, bazı ek işlemler yapmanız gerektiği anlamına gelir. Ahmad Shadeed buna "defansif CSS" adını verir. Burada amaç, bir şeyin nasıl davranması veya görünmesi gerektiğini tam olarak belirtmekten ziyade istenmeyen bir görsel duruma düşmesini önlemektir. Önceden, girişlerin kayda değer miktarda sabit boyutu vardı. Ancak field-sizing: content uygulandıktan sonra girişler çok çok küçük veya çok fazla büyük hale gelebilir.

Aşağıdaki stiller iyi bir başlangıç noktasıdır. Bunlar, öğelerin çok küçük bir kutuya daraltılmamasına ve textarea durumunda çok fazla büyümemesine yardımcı olur.

textarea {
  min-block-size: 3.5rlh;
  min-inline-size: 20ch;
  max-inline-size: 50ch;
}

select {
  min-inline-size: 5ch;
  min-block-size: 1.5lh;
}

input {
  min-inline-size: 7ch;
}

Bu CSS, boyutlandırma için göreli birimler kullanır. Yeni lh birimi, blok boyutları için idealdir ve ch satır içi boyutlar için iyi sonuç verir.

Alan boyutlandırmanın varsayılan değeri nedir?

field-sizing öğesinin varsayılan değeri fixed olup yalnızca fixed veya content değerlerini kabul eder.