Gunbro Blog

language - javascript

Textarea 태그 사용시 자동 높이 조절

개발을 하다보면, 장문의 글을 써야할 때가 있습니다. 그럴 때 textarea 태그를 써서 해결합니다.

<textarea
  rows="5"
  style="border: 1px solid black; resize: none;"
  placeholder="안녕하세요"
></textarea>

해당 코드는 5줄을 넘어갔을 때 스크롤을 만들게 됩니다.

항상 예상하고 rows에 값을 넣을 수는 없습니다.

그런 경우에는 아래와 같이 javascript와 혼용해서 사용해야합니다.

<body>
  <textarea
    id="main-text"
    oninput="onInputHandler()"
    onchange="onInputHandler()"
    style="border: 1px solid black; resize: none; overflow-y: hidden;"
    placeholder="안녕하세요"
  ></textarea>
</body>
<script>
  function onInputHandler() {
    const mainText = document.querySelector("#main-text");
    mainText.style.height = "auto";
    mainText.style.height = `${mainText.scrollHeight}px`;
 
    window.scrollTo({ top: mainText.scrollHeight });
  }
</script>

아래는 다른 예시지만, 위와 같은 원리로 적용했습니다.