Next.js에서 특정 페이지의 __next Div의 CSS를 변경하는 방법

Next.js: 특정 페이지에서 루트 Div __next의 CSS를 변경하는 방법? 소개 Next.js를 사용하면 특정 페이지에서 특정 요소의 CSS를 맞춤 설정해야 할 수 있는 경우가 생길 수 있습니다. 이 블로그 포스트에서는 Next.js 애플리케이션에서 특정 페이지에서 id가 “__next”인 …

title_thumbnail(Next.js에서 특정 페이지의 __next Div의 CSS를 변경하는 방법)

Next.js: 특정 페이지에서 루트 Div __next의 CSS를 변경하는 방법?

소개

Next.js를 사용하면 특정 페이지에서 특정 요소의 CSS를 맞춤 설정해야 할 수 있는 경우가 생길 수 있습니다. 이 블로그 포스트에서는 Next.js 애플리케이션에서 특정 페이지에서 id가 “__next”인 루트 div의 CSS를 변경하는 다양한 방법에 대해 알아보겠습니다. 전역 스타일, 클래스 추가, styled JSX 활용 등 다양한 기술을 살펴보겠습니다. 시작해 봅시다!

1. 전역 CSS 파일 사용하기

로그인 페이지에서 “__next” div에 전역적으로 CSS를 적용하려면 전역 CSS 파일을 생성하고 원하는 스타일을 추가하면 됩니다. 다음 단계를 따르세요:

/* "styles"라는 폴더에 "globals.css"라는 파일을 만들어주세요. */
/* 이 파일은 Next.js 프로젝트의 루트 디렉토리에 둬주세요. */

/* globals.css */
@tailwind components;
@tailwind utilities;
@layer components {
    #__next {
        @apply h-full bg-red-500;
    }
    html,
    body {
        @apply h-full;
    }
}

스타일을 적용하려면 전역 CSS 파일을 애플리케이션에 추가해야 합니다:

// 전역 CSS 파일을 불러옵니다.
import '../styles/globals.css';

2. _document.js에서 styled JSX 활용하기

styled JSX를 사용하고자 한다면, <style> 요소에 global 키워드를 추가하여 “__next” div의 스타일을 수정할 수 있습니다. 다음 단계를 따르세요:

// pages/_document.js
import Document, { Head, Main, NextScript } from "next/document";

export default class MyDocument extends Document {
  render() {
    return (
      <html>
        <Head />
        <body>
          <Main />
          <NextScript />
          <style jsx global>{`
            /* 'html, body' 등 다른 전역 스타일... */

            #__next {
              height: 100%;
            }
          `}</style>
        </body>
      </html>
    );
  }
}

#__next div의 스타일에 height: 100%;를 추가함으로써 로그인 페이지가 마운트될 때 해당 요소의 CSS를 변경할 수 있습니다.

3. 로그인 페이지에 클래스 추가 및 스타일 지정하기

로그인 페이지에서 “__next” div에 수동으로 클래스를 추가하면 클래스를 추가하고 제거함으로써 동적으로 스타일을 적용할 수 있습니다. 다음 단계를 따르세요:

// 로그인 페이지 컴포넌트에서 React를 import 합니다.
import React from 'react';

export default class LoginPage extends React.Component {
  componentDidMount() {
    document.getElementById('__next').classList.add('login-page');
  }

  componentWillUnmount() {
    document.getElementById('__next').classList.remove('login-page');
  }

  render() {
    return (
      <div>
        로그인 페이지
        <style jsx global>{`
          .login-page {
            background-color: red;
          }
        `}</style>
      </div>
    );
  }
}

이 접근 방식에서는 login-page 클래스가 로그인 페이지의 #__next div에 추가되어 해당 요소에 특정 CSS 스타일을 적용할 수 있습니다.

4. Styled JSX 없이 전역 CSS 파일 사용하기

다른 대안으로, JSX를 통해 스타일을 직접 전달하지 않고 전역 CSS 파일을 사용하는 방법이 있습니다. 다음 단계를 따르세요:

/* "global.css"와 같은 이름의 파일을 생성합니다. */

/* global.css */
#__next {
  height: 100vh;
}

_app.tsx 파일에서 전역 CSS 파일을 import하는 것을 잊지 마세요:

// 전역 CSS 파일을 불러옵니다.
import '../styles/global.css';

결론

이 블로그 포스트에서는 Next.js 애플리케이션에서 특정 페이지에서 id가 “__next”인 루트 div의 CSS를 변경하는 다양한 방법을 살펴보았습니다. 전역 CSS 파일, styled JSX, 클래스를 추가하고 제거하는 등의 방법을 통해 개별 요소의 스타일을 유연하게 사용자 정의할 수 있는 Next.js의 다양한 옵션을 제공합니다. 이러한 기술을 실험해 보고 프로젝트에 가장 적합한 접근 방식을 선택해보세요. 즐거운 코딩하세요!

참고 자료 : 

reactjs

Leave a Comment