Next.jsプロジェクトにTailwind CSSで抽象的なテーマカラー名のCSSクラスを設定する
Primary Color や Secondary Color を設定したい
Tailwind CSS には、22 種類のカラープリセットが用意されて、さらに種類ごとに 10 の濃淡に分かれています。
その合計は、なんと 220 色!(v3.0.23 現在)
色が豊富で便利ですが、red
やblue
などのように具体的な色名ではなく、primary
やsecondary
のように抽象的な色名で指定したい場合もあります。
今回は公式ドキュメントを見ながら、どのように設定するのかみていきます。
公式ドキュメントを読んで見る
公式には、以下の内容が記されています。
But when you do need to customize your palette, you can configure your
colors
under the colors key in thetheme
section of yourtailwind.config.js
file:
「パレットをカスタムするにはtailwind.config.js
のtheme.colors
プロパティで設定できます」的なことが書いてあります。
また、こんな便利なことも書かれています。
By default, these colors will be made available everywhere in the framework where you use colors, like the text color utilities, border color utilities, background color utilities, and more.
「設定した色は、テキストカラーやボーダーカラー、バックグラウンドカラーなどフレームワークのどこでも使えるよ」的なことが書いています。
つまりは、tailwind.config.js
のtheme.colors
プロパティに色を追加すると、bg-<custom-color>
やtext-<custom-color>
みたいなことができると解釈できますね…?!
では、実際にためして見ましょう。
tailwind.config.js
をいじる
公式によると以下のように書くと良いらしい。
module.exports = {
theme: {
colors: {
primary: '#5c6ac4',
secondary: '#ecc94b',
}
}
}
これでも良いのだが、私はcolors
プロパティの設定を外部モジュールに切り分けて管理したいので、別の方法で設定します。
colors
プロパティを外部モジュールに切り分ける
簡単ではありますが、ディレクトリ構成としては以下の様になります。
root/
|
+ - src/
| |
| + - styles/colors.ts
| |
│ + - pages/index.tsx
|
+ - tailwind.config.js
まずは、tailwind.config.js
から書いていきます。
colors
プロパティに外部モジュールを設定してあげるだけです。
const { resolve } = require('path');
const colorsPath = resolve(__dirname, 'src/styles/colors.ts');
const colors = require(colorsPath);
module.exports = {
// ...
theme: {
colors: colors,
},
plugins: [],
// ...
};
次に、色設定ファイルを作成します。
今回はsrc/styles
ディレクトリ内にcolors.ts
ファイルを作成し、その中にテーマカラーを設定していきます。
module.exports = {
primary: '#FFFF00', // 黄色
secondary: '#FF00FF',// ピンク
};
テーマカラーが反映されているか確かめる
適当にbg-primary
とtext-secondary
をclassName
に追加してみます。
すると背景黄色で文字ピンクの「Hello World」が表示されているのが確認できるとお思います。
import React from 'react';
const Index = () => {
return <div className={'bg-primary text-secondary'}>Hello World</div>
}
export default Index;
🎉🎉🎉
Thanks
Discussion