피드로 돌아가기
Dev.toFrontend
원문 읽기
JS 제로, field-sizing 도입을 통한 Input 자동 크기 조정 구현
CSS property field-sizing: automatic resizing of input fields
AI 요약
Context
사용자 입력 내용에 따라 textarea 높이가 가변하는 UI 구현을 위해 JavaScript 기반의 scrollHeight 계산이나 Invisible Twin 방식의 DOM 복제 기법을 사용함. 해당 방식들은 렌더링 지연으로 인한 Jitter 현상과 복잡한 스타일 동기화 비용을 초래하는 한계가 있음.
Technical Solution
- field-sizing: content 속성 적용을 통한 브라우저 네이티브 콘텐츠 기반 사이징으로 전환
- JS 이벤트 리스너 및 DOM 조작 로직을 제거하여 런타임 오버헤드 최소화
- lh(line-height) 단위를 활용한 min-height 설정으로 콘텐츠 부재 시의 UI 붕괴 방지
- max-height 제약 조건 설정을 통한 무한 확장 방지 및 임계점 도달 시 Scrollbar 자동 전환 설계
- :has() Pseudo-Class와 결합하여 레이아웃 계산 없는 반응형 Form 구조 최적화
실천 포인트
- field-sizing: content 적용 시 반드시 max-height/max-width 제약 조건을 함께 설정하여 레이아웃 파괴 방지 - 초기 렌더링 시 최소 가독성 확보를 위해 lh 단위를 활용한 min-height 설정 검토 - 기존의 JS 기반 높이 계산 로직을 CSS 네이티브 속성으로 대체하여 코드 복잡도 감소 및 성능 개선