[Next.js] 페이지 다크모드 구현하기

2024. 5. 20. 19:06·Next.js
목차
  1. 1. next-themes 설치하기
  2. 2. 전역에 설정해주기
  3. 3. tailwind.config.js 수정
  4. 4. 다크모드 버튼 구현하기
  5. 👇🏻 참고
728x90
반응형

다크 모드를 next-themes를 이용해 구현한 것을 글로 작성하고자 한다.

1. next-themes 설치하기

npm install next-themes

해당 모듈을 설치해주고, 이가 제대로 설치되었는지 확인해준다. package.json으로 들어가 설치되었는지 확인한다.

해당 모듈은 Html 태그의 className을 "light"와 "dark"로 바꿔준다.

2. 전역에 설정해주기

1) pages/_app.js 수정 전

function MyApp({ Component, pageProps }) {
  return <Component {...pageProps} />
}

export default MyApp

2) pages/_app.js 수정 후

import { ThemeProvider } from 'next-themes'

function MyApp({ Component, pageProps }) {
  return (
    <ThemeProvider attribute="class">
      <Component {...pageProps} />
    </ThemeProvider>
  )
}

export default MyApp
💡 여기서 중요한 점은 attribute를 class로 지정해야 한다.
반응형

3. tailwind.config.js 수정

module.exports = {
  content: [
    "./src/pages/**/*.{js,ts,jsx,tsx}",
    "./src/components/**/*.{js,ts,jsx,tsx}",
  ],
  darkMode: "class", // 이 설정을 추가 해준다
  theme: {
    extend: {},
  },
  plugins: [],
};

4. 다크모드 버튼 구현하기

import { useTheme } from "next-themes";

export default function DarkModeToggleButton() {
  const { theme, setTheme } = useTheme();
  return (
    <>
       setTheme(theme === "dark" ? "light" : "dark")}
      >
        
          
        
        
          
        
      
    
  );
}
  • theme : 위에서 설명한 것처럼 dark, light로 className을 바꿔주기 위해 선언해준다.
  • setTheme : theme가 dark이면 달 svg를, light이면 해 svg를 클릭할 수 있게 해준다.
  • svg : 달과 해를 선언해주어, 바뀐 것을 시각적으로 알 수 있게 해준다.
  • className : className에 style을 주어 해당 svg가 원하는 모양으로 변할 수 있게 한다.

아래와 같은 사이트에서 svg를 복사할 수 있다.

 💡 https://heroicons.com/

 

👇🏻 참고

https://github.com/pacocoursey/next-themes

https://kagrin97-blog.vercel.app/next/darkmode

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)
  1. 1. next-themes 설치하기
  2. 2. 전역에 설정해주기
  3. 3. tailwind.config.js 수정
  4. 4. 다크모드 버튼 구현하기
  5. 👇🏻 참고
'Next.js' 카테고리의 다른 글
  • Notion API 사용 시 주의해야할 점
  • [Next.js] Next.js 사이트에서 노션 Api 사용하기
  • [Next.js] Tailwindcss를 Next.js에 셋팅하기
  • [Next.js] V0.dev waitlist에서 대기타고 ai로 코딩하기
Uheeking
Uheeking
안녕하세요. react, flutter, node.js에 관련해서 글을 쓰는 블로그입니다.
Uheeking의 it로그안녕하세요. react, flutter, node.js에 관련해서 글을 쓰는 블로그입니다.
Uheeking
Uheeking의 it로그
Uheeking
전체
오늘
어제

공지사항

  • 분류 전체보기 (254)
    • React (48)
    • Node.js (32)
    • Next.js (22)
    • Vue.js (15)
    • javascript (3)
    • Django (19)
    • etc (23)
    • Flutter (30)
    • Error (16)
    • AWS (11)
    • docker & Kubernetes (32)
    • git (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
250x250

인기 글

태그

  • Express
  • 쿠버네티스
  • Django
  • useEffect
  • supabase
  • 장고
  • AWS
  • docker
  • Props
  • error
  • React
  • Create
  • Vue.js
  • SSR
  • 오블완
  • firebase
  • NEXT
  • 티스토리챌린지
  • mosquitto
  • 넥스트
  • Kubernetes
  • next.js
  • 도커
  • 리액트
  • sequelize
  • 노드
  • node.js
  • flutter
  • 플러터
  • MySQL

최근 댓글

최근 글

250x250
hELLO· Designed By정상우.v4.5.2
Uheeking
[Next.js] 페이지 다크모드 구현하기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.