/app/ui
디렉토리에 global.css
파일을 추가해서 글로벌 스타일을 적용할 수 있다.clsx
라이브러리를 이용해 조건부 스타일링을 적용할 수 있다.next/font
는 폰트 파일을 빌드 타임에 다운로드해서 static assets로 호스팅한다.// /app/ui/fonts.ts
import { Inter } from 'next/font/google';
export const inter = Inter({ subsets: ['latin'] });
// /app/layout.tsx
import './global.css';
import { inter } from '@/app/ui/fonts';
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="en">
<body className={`${inter.className} antialiased`}>{children}</body>
</html>
);
}
body
태그에 className
을 지정하는 방식으로 모든 웹페이지에 폰트를 적용할 수 있다.Next.js의 Image
컴포넌트는 다음의 항목들을 자동으로 최적화한다.
import Image from 'next/image';
export default function Page() {
return (
// ...
<Image
src="/hero-desktop.png"
width={1000}
height={760}
className="hidden md:block"
alt="Screenshots of the dashboard project showing desktop and mobile versions"
/>
<Image
src="/hero-mobile.png"
width={560}
height={620}
className="block md:hidden"
alt="Screenshots of the dashboard project showing desktop and mobile versions"
/>
//...
);
}
className
속성을 이용해서 데스크탑 이미지의 경우 기본값을 display: none
으로 하고 768px 이상일 때만 이미지를 보여준다.display: none
으로 보이지 않도록 한다.