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
こちらの記事で対応されているようです。