1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【02】Next.js app routerのチュートリアルやってみる(CSSスタイル)

Last updated at Posted at 2024-02-03

はじめに

Next.js app routerのチュートリアルの第2章のアウトプットします。

前の記事

【01】Next.js app routerのチュートリアルやってみる

https://qiita.com/naoyuki2/items/af58da3d20cbc790e767

第2章 CSSスタイル

この章では下記を学習しました。

  • グローバルCSSをインポートする
  • Tailwind
  • CSSモジュール
  • clsxでクラス名を柔軟に変更する

グローバルCSSのインポート

グローバルCSSファイルはアプリケーション全体で使用できる必要がある。

その場合はlayout.tsxでインポートする。

layout.tsxapp routerにおけるルートレイアウトと呼ばれるファイルみたいです。

ここに書いたコードはすべてのページで共有されるため、headerfooterといったものはおそらくここに書くのでしょう。

Tailwind

Next.jscreate-next-appで新しいプロジェクトを作成した場合にTailwindを使うか尋ねられます。

その時にYesを選択しておけば、すぐにTailwindが使える状態になっています。

CSSモジュール

一意のクラス名を自動的に作成することで CSS のスコープをコンポーネントに設定できるため、スタイルの衝突についても心配する必要がなくなります。

だそうです。

私は、Tailwindが結構好きですし、この後のコースもTailwindでスタイリングをするみたいなので適当に読み飛ばしました。

clsxでクラス名を柔軟に変更する

条件に基づいて要素のスタイルを設定するしたいという場合があります。

その時に使えるライブラリがclsxです。

例えば以下のコードでは、statusredorblueを受け取ります。

そして、divclassNameの中で条件式を書くことができます。

import clsx from 'clsx';

type Status = 'red' | 'blue';

type Props {
  status: Status;
}

export default function Test({ status }: Props) {
  return (
    <div
      className={clsx({
        'bg-red-100': status === 'red',
        'bg-blue-100': status === 'blue',
      })}
    >
      test
    </div>
  );
}

statusredの場合

app/page.tsx
<Test status="red" />

image.png

statusblueの場合

app/page.tsx
<Test status="blue" />

image.png

おわりに

まだまだ楽勝ですね!

次の記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?