TL;DR
雑な感じだが、これで出来る。
文字数が減ったときの対応は、入れていないのであしからず。
<textarea id="area"></textarea>
document.getElementById('area').addEventListener('input', function(event) {
event.target.offsetHeight < event.target.scrollHeight ? event.target.style.height = event.target.scrollHeight+'px' : nil;
});
追記
同僚からあまりにも雑すぎるwと意見を頂いたので、簡単な解説をば。
- 対象のテキストエリアに
inputでのイベントを仕込みます。 -
offsetの高さと、scrollの高さを比較します。 -
scrollの高さの方が高い場合は、対象のテキストエリアの高さをscrollの高さにします。
以上です。
Vanilla JS で書いてますが、お好きなライブラリ使えばもっと簡単になると思います。
文字が減ったときもちゃんとリサイズしたい!
入力内容の量に応じたtextareaの自動サイズ変更 - Qiita
こちらの記事で対応されているようです。