Next.js (6): TailwindCSSのClass & Modifier紹介(Dark modeなど)
概要
今回はこれらのデザインを利用します。前回の記事に続けてtailwindCSSで有用なClass、modifierを紹介したいと思います。
ZennのArticlesのダークモード
IKEAの商品リストのカード
Dark mode
ZennのArticleのダークモードを作ってみました。
(tailwindCSSで提供するカラーセットで作ったので、色の組み合わせがやや不自然ではあります。。😞)
Dark modeの判断はデフォルトはパソコンのセッティングやブラウザに合わせて判断します。
classNameでDark modeをつけたい場合 darkMode: "class",
を追加します。
これでclassNameに dark
を追加するとその配下の要素はDark modeになります。便利!
module.exports = {
content: [
"./pages/**/*.{js,jsx,ts,tsx}",
"./components/**/*.{js,jsx,ts,tsx}",
],
theme: {
extend: {},
},
darkMode: "class", //default media
plugins: [],
};
https://tailwindcss.com/docs/dark-mode
modifier
hover時のCSS反映も簡単に作れます。hoverの後ろにhoverした時のclassを追加するだけです。
hover
hover:bg-cyan-600
<button className="rounded-full bg-blue-700 p-3 shadow-xl transition-colors hover:bg-cyan-600">
その他にも、focus: formでdisable:required:など、様々なmodifierを提供するのでドキュメントをご参考ください
https://tailwindcss.com/docs/hover-focus-and-other-states
ring
アウトラインのリングを表示する時に利用します。focusされた時にringが表示されます。
- ring-black: ringの色
- ring-offset-2: ringと要素との間隔を開ける
- ring-2: ringの幅
<div className=" bottom-0 right-4 space-x-2">
<button className="h-5 w-5 rounded-full bg-black ring-black ring-offset-2 transition focus:ring-2"></button>
<button className="h-5 w-5 rounded-full bg-amber-400 ring-amber-400 ring-offset-2 transition focus:ring-2"></button>
<button className="h-5 w-5 rounded-full bg-teal-500 ring-teal-500 ring-offset-2 transition focus:ring-2"></button>
</div>
https://tailwindcss.com/docs/ring-width
https://tailwindcss.com/docs/ring-color
https://tailwindcss.com/docs/ring-offset-width
https://tailwindcss.com/docs/ring-offset-color
Configuration
tailwindCSSで提供する基本設定ではなく、カスタムすることもできます。
例えば
- yellow色を別の彩度のyellow色にしたい
- フォントを変えたい
- widthを70%がほしい
以下のように設定できます。例えばwidth: 70%はw-70/100
のように利用できます。
module.exports = {
content: [
"./pages/**/*.{js,jsx,ts,tsx}",
"./components/**/*.{js,jsx,ts,tsx}",
],
theme: {
extend: {
spacing: {
"70/100": "70%",
},
colors: {
yellow: "#ffc82c",
},
fontFamily: {
sans: ["Graphik", "sans-serif"],
serif: ["Merriweather", "serif"],
},
},
},
darkMode: "class", //default media
plugins: [],
};
https://tailwindcss.com/docs/configuration
animation
animate-pulse
を利用することで要素を柔らかくfadeさせます。
<button className="animate-pulse p-2">
<svg
xmlns="http://www.w3.org/2000/svg"
className="h-7 w-7 stroke-blue-700"
fill="none"
viewBox="0 0 24 24"
strokeWidth="2"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"
/>
</svg>
ほかにもロードの表示に有用なクルクルさせるanimate-spin
メッセージ表示に有用な animate-ping
などが提供されています。
https://tailwindcss.com/docs/animation
まとめ
紹介したclass以外にも様々なclassがあるので公式ドキュメントをご参考ください。
最初はclass名に慣れなくて覚えられず開発がくなると感じられるかもしれませんが、何回か繰り返して使うと、よく使うclassはすぐ覚えらます。
また、前回の記事で紹介した自動で補完してくれるvscodeのextension「Tailwind CSS IntelliSense」とtailwindCSS チートシートを並行して使うと、より効率良くデザインできると思います。
ソースコードは私のgitリポジトリにあげておきましたのでよかったらみてください。
Discussion