input 요소의 focus 여부에 따른 스타일 속성을 정의하던 중 input 안의 placeholder가 미세하게 튀는 현상이 나타났다. input의 border 속성이 레이아웃에 영향을 주는 reflow를 유발하기 때문이었다.
- reflow가 일어나는 속성: border
- repaint만 일어나는 속성: border-radius, border-style, outline
📍 outline의 특징:
- 요소의 콘텐츠 밖에 그려지며 절대 공간을 차지하지 않는다.
- border와 달리 상하좌우 모든 테두리에 적용된다. (border-top 등 한쪽 부분에만 적용할 수 있는 것과 대비됨)
- IE7 이하에서 지원되지 않는다.
📍 해결책:
outline으로 제어가 가능한 경우라면 reflow를 일으키는 border 대신 outline으로 css 속성을 제어하는 게 하나의 해결책이 될 수 있다.
그렇지 않은 상황이라면 기본 상태에 border를 미리 잡아두고 border의 색상을 transparent로 한 후, 필요한 상태가 되었을 때 border-color 속성을 재정의한다.
📚 참고자료
'배워서 남 주자' 카테고리의 다른 글
react-router-dom의 <Link>로 이미 가지고 있는 데이터 넘겨주기 (0) | 2023.08.22 |
---|---|
서버에 보낼 request body에 내장자료구조 Map을 사용하면 어떻게 될까? (0) | 2023.08.15 |
mdn 문서 번역에 기여하기 (0) | 2023.07.26 |
모노레포(Monorepo)란? (0) | 2023.07.22 |
Ant Design DatePicker localization 한글화 이슈 (0) | 2023.07.21 |