La propriété CSS field-sizing: content permet d'ajuster la taille d'un <textarea> en fonction de son contenu, mais elle fonctionne également sur les <input> et <select>.
field-sizing: content
<textarea>
<input>
<select>