-
[CSS] emotion 사용 시 :nth-child CSS selector 경고CSS 2022. 6. 25. 18:27
The pseudo class ":nth-child" is potentially unsafe when doing server-side rendering. Try changing it to ":nth-of-type"
가상 클래스 ":nth-child"는 서버 사이드 렌더링 수행 시 잠재적으로 안전하지 않다. ":nth-of-type"으로 변경하라CSS 라이브러리로 emotion 사용 시에,
:nth-child을 사용하니 위와 같은 경고 메시지가 나타났다.
":nth-of-type"으로 변경하니 경고는 사라졌지만 이유가 무엇인지 궁금해졌다.
:nth-child와 :nth-of-type 차이
:nth-child(n) :nth-child 부모 엘리먼트의 모든 자식 엘리먼트중 n번째 부모 엘리먼트의 특정 자식 엘리먼트중 n번째 Emotion - Server Side Rendering
Server side rendering in Emotion 10 has two approaches, each with their own trade-offs. The default approach works with streaming and requires no additional configuration, but does not work with nth child or similar selectors. It’s strongly recommended t
emotion.sh
@emotion/react 및 @emotion/style만 사용하는 경우 Emotion 10 이상에서 서버 사이드 렌더링이 작동된다.
서버 사이드를 통해 렌더링 된 DOM 구조는 스타일이 있는 각 엘레먼트 위에 <style> 태그를 삽입하게 된다.
const MyDiv = styled('div')({ fontSize: 12 }) <MyDiv>Text</MyDiv> // sever side rendering <style data-emotion-css="21cs4"> .css-21cs4 { font-size: 12 } </style> <div class="css-21cs4">Text</div>
예시를 보면 서버 사이드의 DOM 구조는 <div> 태그 위에 사용자가 정의한 CSS 스타일이 <style> 태그로 놓이게 된다.
그러면 첫째 자식 엘레먼트가 <div> 요소가 아닌 <style>되므로, :nth-child 셀렉터가 동작하지 않게 된다.
반응형'CSS' 카테고리의 다른 글
[CSS] non-boolean attribute warning (0) 2022.09.04 [CSS] gradient transition 적용하기 (React) (0) 2022.07.26 [CSS] 자동 완성 시 input 배경색 변경 (0) 2022.07.15 [CSS] 콘텐츠의 길이와 상관 없이 footer 하단 고정 (0) 2022.06.10 [CSS] aspect-ratio : 요소의 비율 유지하기 (0) 2022.06.01