dev/Next.js

Next.js 14 에 mui 프레임워크 tailwind css 적용방법

wndud587 2024. 10. 16. 11:59
728x90

MUI(Material-UI)는 React 기반의 프론트엔드 개발을 위한 오픈소스 UI 라이브러리입니다. MUI는 다양한 미리 설계된 컴포넌트들을 제공하여, React 개발자들이 빠르고 효율적으로 사용자 인터페이스(UI)를 구성할 수 있도록 돕습니다. 특히, 구글의 머티리얼 디자인(Material Design) 가이드라인을 바탕으로 디자인된 컴포넌트를 제공하여 일관된 사용자 경험을 유지하면서도 직관적인 디자인을 쉽게 구현할 수 있습니다.

MUI의 주요 특징:

  1. 컴포넌트 기반 구조: MUI는 버튼, 카드, 네비게이션 바 등과 같은 다양한 UI 컴포넌트를 제공하며, 이를 조합해 애플리케이션을 쉽게 구축할 수 있습니다.
  2. 커스터마이징: 기본적으로 제공되는 디자인을 쉽게 변경하거나 커스터마이징할 수 있어, 자신만의 스타일로 구성된 UI를 만들 수 있습니다.
  3. 반응형 디자인: MUI는 반응형(responsive) 디자인을 지원하므로, 다양한 화면 크기와 디바이스에서 일관된 UI를 유지할 수 있습니다.
  4. 스타일링: MUI는 자체적인 sx 프로퍼티로 인라인 스타일을 쉽게 적용할 수 있으며, CSS-in-JS 방식으로 스타일링을 처리해 다른 CSS 프레임워크들과의 충돌을 최소화합니다.
  5. 커뮤니티와 확장성: 오픈소스로 운영되기 때문에 활발한 커뮤니티가 있으며, 지속적인 업데이트와 확장 기능들이 제공됩니다.

 


진행순서

MUI 설치 -> tailwind css 적용

 


 

 

1. 프로젝트 생성

- 프로젝트를 생성을 합니다

npx create-next-app@latest {projectName}

 

 

2. MUI 설치

- mui를 설치합니다

npm install @mui/material @emotion/react @emotion/styled

mui 설치

 

3. tailwindcss 설치

- 테일윈드를 설치하면, 다음과 같이 파일이 생성이 됩니다

npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p

tailwind 설치

 

 

4. tailwind.config.js 수정

- corePlugins부분이 이 추가 

- 생성된 tailwind.config.js 파일을 수정해 MUI와의 충돌을 방지해야 합니다. MUI는 자체적인 CSS reset을 사용하므로, Tailwind의 기본 스타일을 비활성화하는 것이 좋습니다.

/** @type {import('tailwindcss').Config} */
module.exports = {
  //  추가
  corePlugins: {
    preflight: false, 
  },

  content: [
    "./app/**/*.{js,ts,jsx,tsx,mdx}",
    "./pages/**/*.{js,ts,jsx,tsx,mdx}",
    "./components/**/*.{js,ts,jsx,tsx,mdx}",
    "./src/**/*.{js,ts,jsx,tsx,mdx}",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
};

 

5. globals.css 수정

- tailwind 공식문서에 보면 아래와 같이 3개를 입력하지만, base는 주석을 처리하였습니다

- globals.css 파일을 수정하여 Tailwind CSS의 스타일을 적용합니다. Tailwind 공식문서에서는 base, components, utilities를 추가하라고 하지만, MUI와의 충돌을 방지하기 위해 base는 주석 처리합니다.

/* @tailwind base; */
@tailwind components;
@tailwind utilities;

 

 

6. layout.js 수정

- 아래와 같이 수정합니다

 

import "./globals.css";

export default function RootLayout({ children }) {
  return (
    <html lang="ko">
      <body>{children}</body>
    </html>
  );
}

 

7. page.js 수정

- MUI와 Tailwind CSS를 함께 사용하는 페이지를 작성합니다. 여기서는 MUI의 Button 컴포넌트와 Tailwind CSS의 텍스트 스타일을 적용합니다.

 

import { Button } from "@mui/material";

export default function Home() {
  return (
    <div>
      <div>
        mui : <Button variant="contained">Contained</Button>
      </div>
      <div>
        tailwind :{" "}
        <h1 className="text-3xl font-bold underline">Hello world!</h1>
      </div>
    </div>
  );
}

 

8. 확인

실행 완료

 

728x90