배워서 남 주자

reflow가 일어나는 속성: border vs. outline

미래에서 온 개발자 2023. 8. 13. 12:24

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 속성을 재정의한다. 

 

 

📚 참고자료

 

CSS, border와 outline의 차이

#CSS, border와 outline의 차이 스타일시트로 박스에 테두리를 만드는 방법은 여러 가지가 있습니다. 기...

blog.naver.com

 

Repaint만 일어나는 속성, 아예 Repaint도 일어나지 않는 속성

브라우저에서 웹 사이트를 꾸미는 것에 있어서 우리는 각자 다양한 방식으로 많은 스타일 속성들을 사용하여 꾸미게 됩니다. 그런 상황에서도 브라우저 렌더링을 최소화 할 수 있고 Reflow를 아

frontdev.tistory.com