Among other things, good user interface design means choosing the right size for form elements. Make a textarea
too small, and the user won't have an overview of the text they are entering. It is especially hard to navigate around the text and modify it in this case. On the other hand, if the textarea
is too big then it uses up needless screen real estate and makes your page appear unbalanced.
The obvious solution is to have the textarea
start out small and expand as text is entered. A bit of googling turns up a number of libraries that purport to do this, both standalone and jQuery plugins. Some have ugly glitches like scrolling the textarea
before it is resized so that the text "jumps".
The best of the bunch may be Autosize by Jack Moore. It is rock solid and supports a range of common use cases with enviable simplicity:
// from a NodeList
autosize(document.querySelectorAll('textarea'));
// from a single Node
autosize(document.querySelector('textarea'));
// from a jQuery collection
autosize($('textarea'));