개발 블로깅/오늘의 TIL

[2019.08.21] 오늘의 TIL - [Next.js] Style 주의할 점

Hello이뇽 2019. 8. 21. 22:36

Next.js에서 스타일을 추가할 때, 일반적으로 <style jsx> 태그를 써서, 그 안에 CSS 스타일을 쓴다.

예시는 아래와 같다.

<div>
  <div className='Templet'>Hello~</div>

  <style jsx>
    {`
      .Templet{
        width: 100%;
        height: 100%
      }
    `}
  </style>
</div>

 

태그에 클래스 명을 지정해주고, style jsx라는 태그 사이에 스타일을 작성한다. 

그리고 React 특성 상, style jsx 태그를 포함하여 다른 컴포넌트로 전체를 한번 감싸준다. (1번 줄, 맨 마지막 줄의 div)

 

그러나 이러한 일반적인 스타일 방식이 먹히지 않을 때가 있다.

바로 아래와 같다.

const component = () => {
  const arr = ['하나', '둘', '셋'];
  const Temp = arr.map(element => (<div className='Templet'>{element}</div>));
  
  return (
    <div>
      <div>
        {Temp}
      </div>

      <style jsx>
        {`
          .Templet{
            width: 100%;
            height: 100%
          }
        `}
      </style>
    </div>
  );
}


 

위 코드를 보면, View 단에 쓸 Temp 컴포넌트를 return 전에 미리 정의해서 사용했다. 

저렇게 미리 만들어 놓은 컴포넌트에는 style이 안먹는다....

이유는 모르겠지만... 내 추측에는, component는 return 전에 이미 만들어 놓았고, style jsx은 return할 때 정의되어서 그런 것 같다..

 

# 추가 주의할 점 - hover

hover는 마우스가 해당 컴포넌트에 올라갔을때 반응하게 하는 스타일이다.

.Temp: hover {
  background-color: yellow
}

 

일반적으로 hover를 정의할 때, 위 코드와 같다. 클래스 네임 혹은 아이디 뒤에 콜론(:)을 붙이고 뒤에 hover를 쓴다.

그러나 위 코드는 hover가 먹히지 않는다.

hover를 쓰려면 네임과 'hover' 사이에 공백이 있으면 안된다.

정상적인 코드는 아래와 같다.

.Temp:hover {
  background-color: yellow
}

 

 

반응형