Satu baris kode untuk elemen pengubahan ukuran otomatis dengan konten yang dapat diedit.
Tanpa field-sizing, untuk membuat kolom input berukuran tepat, Anda harus
menebak ukuran rata-rata input kolom teks atau menggunakan JavaScript untuk menghitung
karakter dan menambah tinggi atau lebar elemen saat pengguna memasukkan teks. Dengan
kata lain, hal ini tidak mudah, dan rentan terhadap error saat mencoba mengikuti
konten yang telah dimasukkan pengguna ke dalam input.
Dengan field-sizing, Anda memerlukan satu baris CSS untuk mengaktifkan penentuan ukuran berdasarkan konten. Gaya ukuran berbasis konten ini juga berfungsi untuk lebih dari sekadar textarea.
textarea, select, input {
field-sizing: content;
}
Link cepat
Suka video pendek?
Wes Bos dan
Jhey masing-masing memiliki video
bagus di Twitter yang memperkenalkan field-sizing kepada Anda.
Elemen mana yang terpengaruh oleh field-sizing?
Berikut adalah daftar elemen <form> yang dapat digunakan dengan field-sizing, beserta ringkasan efeknya pada setiap elemen.
<textarea>
Input diciutkan menjadi min-inline-size atau agar sesuai dengan placeholder.
Saat pengguna mengetik, input akan bertambah ke arah inline hingga mencapai ukuran inline maksimum, yang pada saat itu teks akan digabungkan dan ukuran blok input akan bertambah agar sesuai dengan baris baru.
<select> dan <select multiple>
Elemen pilihan menyusut agar sesuai dengan opsi yang dipilih.
Pilihan dengan atribut multiple akan bertambah agar sesuai dengan opsi terluas dan
setinggi yang diperlukan agar sesuai dengan jumlah opsi.
<input type="text">, <input type="email">, dan <input type="number">
Input diciutkan menjadi min-inline-size atau agar sesuai dengan placeholder.
Saat pengguna mengetik, input akan bertambah ke arah inline hingga mencapai
max-inline-size, yang pada titik tersebut overflow akan memotong nilai input.
<input type="file">
Input akan diciutkan menjadi tombol dan teks nama file yang telah diisi otomatis.
Setelah mengupload file, input akan menjadi selebar tombol ditambah teks nama file.
Melihat, menguji, dan membandingkan hasil
Berikut adalah contoh interaktif dan minimal dari perilaku sebelum dan sesudah
setiap elemen formulir, seperti yang dipengaruhi oleh field-sizing.
Meneliti detail
Saat menggunakan
[placeholder],
placeholder akan menjadi konten. Hal ini telah disebutkan sebelumnya, tetapi ditekankan
di sini, karena penting untuk diketahui saat menata gaya formulir. Placeholder panjang atau pendek
akan mengubah ukuran intrinsik input dengan field-sizing:
content.
Penanganan gaya kosong dan meluap
Menggunakan field-sizing berarti Anda harus melakukan beberapa pekerjaan tambahan. Ahmad
Shadeed menyebutnya "CSS
defensif", yang tujuannya tidak
selalu untuk menjelaskan dengan tepat bagaimana sesuatu harus berperilaku atau terlihat, melainkan untuk
melindunginya agar tidak masuk ke status visual yang tidak diinginkan. Sebelumnya, input memiliki
sejumlah ukuran tetap, tetapi setelah menerapkan field-sizing: content, input dapat menjadi terlalu kecil atau terlalu besar.
Gaya berikut adalah titik awal yang baik. Properti ini membantu elemen agar tidak
menciut menjadi kotak yang terlalu kecil dan juga, dalam kasus textarea, tidak tumbuh
terlalu besar.
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;
}
CSS ini menggunakan unit relatif untuk ukuran. Unit
lh
baru sangat cocok untuk ukuran blok dan
ch
berfungsi dengan baik untuk ukuran inline.
Apa nilai default field-sizing?
Nilai default field-sizing adalah fixed, dan hanya menerima dua nilai, yaitu fixed atau content.