代表的なCSSのフレームワークとして、BootstrapやBulma, MUIなどが挙げられますが、最近では、Tailwind CSSを導入するプロジェクトも増えている印象を受けます。
そこで、Next.jsの環境へTailwind CSSを導入する方法と使い方について、サンプルコードを用いながら解説していきます。
Tailwind CSSを活用するメリット
- class名を考える必要がない (準備されているclassを記述するだけでデザインを反映させることが可能)
- 準備された各種classを組み合わせて、デザインをすることが出来るため、独自性の高いサイトを制作できる
- メディアクエリについてもclassが用意されているため、レスポンシブ時のデザインも直感的に設定可能
- スタイルの変更はHTML上で完結する
- 上記の4点の特徴があることにより、開発速度の向上を目指せる
Next.js : 環境構築
- 1
- 2Next.js : 新規アプリ作成
作成したい場所へ移動し、以下のコマンドを実行することで新規アプリを作成することが可能です。
npx create-next-app@バージョン アプリ名
Typescriptやeslintを使用する場合は、次のようにオプションを追加します。
npx create-next-app@バージョン アプリ名 --typescript --eslint
今回は、後者のコマンドを実行していきます。
私は、Next-testというフォルダを別途作成し、その中に環境を作成しました。アプリ名は、next-tailwindです。
コマンドを実行すると色々と聞かれますが、全てNoを選択しましょう。
Tailwind CSSについても聞かれているため、ここでYesを選んでしまえばいいのでは??と考えることも出来ますが、環境構築時のみではなく、環境構築後にTailwind CSSを導入する方法を理解するためにも、今回はあえてNoを選びます。
画像のように、Success!と表示されたら環境構築が完了しています。
- 3アプリの実行(動作の確認)
念のため、正常にアプリケーションが実行可能か確認をしておきましょう。cdコマンドでアプリケーションフォルダへ移動し、npm run devでローカルサーバーを起動します。
cd アプリケーションフォルダ npm run dev
http://localhost:3000 にアクセスし、以下のように表示されればOKです。
Tailwind CSSを導入
続いて、Tailwind CSSを導入していきましょう。
- 1インストール
アプリケーションフォルダであるnext-tailwindに移動していることを確認したうえで、以下のコマンドを実行しましょう。このコマンドのみで、Next.js環境にtailwindを導入することが可能です。
npm i -D tailwindcss postcss autoprefixer
- 2Tailwind CSSを初期化
インストールが無事に完了したら、Tailwind CSSの初期化を行います。
npx tailwindcss init -p
すると、Tailwind CSSとPostCSSの設定ファイルが作成されます。
- 3tailwind.config.jsを編集
編集前
content内に以下のコードを追加します。
"./app/**/*.{js,ts,jsx,tsx,mdx}", "./pages/**/*.{js,ts,jsx,tsx,mdx}", "./components/**/*.{js,ts,jsx,tsx,mdx}", // Or if using `src` directory: "./src/**/*.{js,ts,jsx,tsx,mdx}",
編集後
- 4global.cssの編集
Tailwind CSSを使用するための最後の仕上げです。
stylesフォルダ直下にあるglobal.css内のCSSをすべて削除したうえで、
以下のコードを追加しましょう。
@tailwind base; @tailwind components; @tailwind utilities;
tailwind.config.jsとglobal.cssの編集が完了したら、Tailwind CSSの導入&設定は、終了です。
Tailwind CSSを用いてテーブルをデザイン
最後にTailwind CSSの使い方について、ご紹介します。HTMLでテーブルを作成し、Tailwind CSSでスタイルを設定してみましょう。
- 1編集するファイルを確認
編集するファイルは、pagesフォルダ直下のindex.tsxなります。(TypeScriptではなくJavaScriptを使用されている場合は、拡張子が変わります。)
- 2HTMLを記述
index.tsxを開き、既存のコードをすべて削除します。
続いて、以下のコードを追加しましょう。
export default function Home() { return ( <> <div> <h1>Table</h1> <table> <thead> <tr> <th>果物</th> <th>野菜</th> <th>肉</th> </tr> </thead> <tbody> <tr> <td>りんご</td> <td>きゅうり</td> <td>鶏肉</td> </tr> <tr> <td>ぶどう</td> <td>なす</td> <td>豚肉</td> </tr> <tr> <td>みかん</td> <td>とまと</td> <td>牛肉</td> </tr> </tbody> </table> </div> </> ) }
現時点でローカルサーバーを起動し、結果を確認すると、下記のようになります。
- 3スタイルの設定
export default function Home() { return ( <> <div className="min-h-screen flex-col flex justify-center items-center"> <h1 className="text-4xl mb-5">Table</h1> <table className="border-collapse border border-slate-400"> <thead> <tr> <th className="border border-slate-500 px-4 py-2 bg-slate-100 font-bold">果物</th> <th className="border border-slate-500 px-4 py-2 bg-slate-100 font-bold">野菜</th> <th className="border border-slate-500 px-4 py-2 bg-slate-100 font-bold">肉</th> </tr> </thead> <tbody> <tr> <td className="border border-slate-500 px-4 py-2">りんご</td> <td className="border border-slate-500 px-4 py-2">きゅうり</td> <td className="border border-slate-500 px-4 py-2">鶏肉</td> </tr> <tr> <td className="border border-slate-500 px-4 py-2">ぶどう</td> <td className="border border-slate-500 px-4 py-2">なす</td> <td className="border border-slate-500 px-4 py-2">豚肉</td> </tr> <tr> <td className="border border-slate-500 px-4 py-2">みかん</td> <td className="border border-slate-500 px-4 py-2">とまと</td> <td className="border border-slate-500 px-4 py-2">牛肉</td> </tr> </tbody> </table> </div> </> ) }
html内にclassNameを記述し、TailwindCSSで用意されているclassを設定しています。
再度、サーバーを起動してみるとスタイルがしっかりと反映されていることが確認出来ます。
ここまでの流れのみですと、class名の意味が分からないため、やっていることがいまいちピンとこないかと思います。
そこで、class名と反映されるCSSをセットでまとめているチートシートが存在しますので、こちらを確認しながらどういったCSSが反映されているのか確認してみてください。
まとめ
本記事では、Next.jsの環境へTailwind CSSを導入する流れと使い方についてご紹介していきました。予め用意されたclassを組み合わせて、独自性のあるデザインを作るためには、CSSに関する知識やそれなりの技術力が求められますが、その反面メリットも多いため、今後も多くの現場で活躍するCSSフレームワークであると思います。
今回は、Windows環境で作業をしましたが、Macの場合でもTailwind CSSを導入する上での作業内容は変わりません。
コメント