Tailwind CSSスニペット
そもそもTailwind CSSとは
導入:
Tailwind CSSは近年人気が高まっているユーティリティファーストのCSSフレームワークです。従来のCSSフレームワークとは異なり、コンポーネントベースではなく、低レベルなスタイルユーティリティクラスを組み合わせて styling を行います。この手法には一長一短がありますが、適切に活用すれば開発の効率化や保守性の向上が期待できます。
本記事では、Tailwind CSSの概要から具体的な使い方、メリット・デメリットまでを解説します。Tailwind CSSに興味がある方は、ぜひ参考にしてみてください。
本論:
- Tailwind CSSとは?
Tailwind CSSは、low-levelなスタイルユーティリティクラスを組み合わせることでスタイリングを行うCSSフレームワークです。例えば .text-red-500
はテキストの色を設定し、 .mt-4
は上のマージンを設定するクラスになります。
<div class="text-red-500 mt-4">
Hello, Tailwind CSS!
</div>
このように、HTMLの要素にクラスを直接割り当ててスタイリングします。伝統的なCSSフレームワークとは異なり、予めデザインされたコンポーネントはありません。
- メリット・デメリット
Tailwind CSSを利用するメリットは以下の通りです。
- 再利用可能なスタイルユーティリティクラスを自由に組み合わせられる柔軟性がある
- クラスベースでスタイルを切り分けられるため保守性が高い
- デフォルトのスタイリングがないため、カスタマイズしやすい
一方、デメリットは以下になります。
- HTMLにスタイルの情報が含まれるため可読性が低下する可能性がある
- スタイルユーティリティクラスの量が膨大になりがちで管理が難しい
- 高度な設計が必要になるため、初心者には馴染みにくい
- 導入方法
Tailwind CSSを使うための準備として、まずNode.jsをインストールする必要があります。次にCLIツールを使ってTailwind CSSをプロジェクトに導入します。
# tailwind install
npm install -D tailwindcss
npx tailwindcss init
初期設定ファイル tailwind.config.js
が生成されるので、content
オプションにスタイリングする対象ファイル(.html
など)を指定します。
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ["./src/**/*.{html,js}"],
theme: {
extend: {},
},
plugins: [],
}
次に src/input.css
を作成し、Tailwindの機能をインポートします。
@tailwind base;
@tailwind components;
@tailwind utilities;
最後にビルドコマンドを実行するとCSSファイルが出力されます。
npx tailwindcss -i ./src/input.css -o ./dist/output.css --watch
- 実践的な使い方
Tailwind CSSの具体的な使い方を、サンプルとともに解説します。
テキストスタイリング
<!-- 文字色 -->
<p class="text-red-500">赤色のテキスト</p>
<!-- 文字サイズ -->
<p class="text-sm">小さいテキスト</p>
<p class="text-lg">大きいテキスト</p>
<!-- 文字の太さ -->
<p class="font-bold">太字のテキスト</p>
<!-- 装飾 -->
<p class="underline">下線付きのテキスト</p>
配置と間隔
<!-- 水平方向の中央配置 -->
<div class="mx-auto w-48">中央に配置されたボックス</div>
<!-- マージン -->
<div class="mt-4">上に余白が4単位ある</div>
<!-- パディング -->
<div class="p-2">内側に余白が2単位ある</div>
<!-- 配置 -->
<div class="flex justify-between">
<span>左端</span>
<span>右端</span>
</div>
レスポンシブデザイン
<!-- スクリーンサイズに応じてフォントサイズを変更 -->
<p class="text-sm md:text-base lg:text-lg xl:text-xl">
レスポンシブなテキスト
</p>
Tailwind CSSではスクリーンサイズの閾値ごとにブレークポイントを設定できます。上記の例では sm
(640px未満)、md
(768px以上)、lg
(1024px以上)、xl
(1280px以上) でフォントサイズが変わります。
様々なユーティリティクラスを組み合わせながら、こういった方法で柔軟なスタイリングが可能になります。
- Tailwind CSSを学ぶリソース
Tailwind CSSを学習するために役立つリソースを紹介します。
公式サイト
-
Tailwind CSSの公式サイトです。導入ガイド、利用例、設定オプションなど、詳細な情報が網羅されています。
書籍
-
Tailwind CSS: The Complete Guide
Adam Wathan & Steve Schoger 著Tailwind CSSの開発者自身が執筆したフルガイドブックです。本格的にTailwind CSSを学習したい人におすすめ。
動画講座
-
Tailwind CSS Tutorial for Beginners
https://www.youtube.com/watch?v=UBOj6rqRUMETailwind CSSの基本概念から実践的な使い方までが無料で学べる動画講座です。
結論:
Tailwind CSSは柔軟でカスタマイズ性が高いCSSフレームワークですが、従来のアプローチとは大きく異なるため一概に評価は分かれるところです。メリット・デメリットを踏まえた上で、ご自身のプロジェクトにどう適用するかを判断することが重要
作例・基本的なクラスの紹介
こんな感じのカードコンポーネント作りたい場合
スタイルの種類 | カテゴリー | クラス | 説明 | 追加情報 |
---|---|---|---|---|
テキスト | フォントの太さ | font-bold |
テキストを太字にする |
font-normal 、font-medium 、font-semibold 、font-extrabold 、font-black もある |
テキスト | フォントサイズ | text-xl |
テキストを大きくする(1.25rem) |
text-xs 、text-sm 、text-base 、text-lg 、text-2xl 、text-3xl 、text-4xl 、text-5xl 、text-6xl もある |
テキスト | テキストの配置 | text-center |
テキストを中央揃えにする |
text-left 、text-right 、text-justify もある |
テキスト | テキストサイズ |
text-xs から text-9xl
|
テキストサイズを設定。 |
text-base , text-lg , text-xl など。 |
テキスト | テキスト色 | text-color |
テキストの色を設定。 |
text-red-500 , text-blue-200 など。text-zinc-50 から text-zinc-900 のグレースケールの色も設定可能。 |
背景 | 背景色 | bg-blue-500 |
背景色を青色にする | 他の色も数字を変えることで指定できる(例:bg-red-200 、bg-green-700 など) |
背景 | 背景色 |
bg-transparent , bg-color
|
背景色を設定。 |
bg-red-500 , bg-blue-200 など。 |
ボーダー | 角丸 | rounded |
要素の角を丸くする |
rounded-none 、rounded-sm 、rounded-md 、rounded-lg 、rounded-full もある |
ボーダー | ボーダー幅 | border-2 |
ボーダーの幅を2pxにする |
border 、border-0 、border-4 、border-8 もある |
ボーダー | 境界線 | border |
要素に標準の境界線を追加。 |
border-t , border-b のように特定の方向の境界線も設定可能。 |
ボーダー | 境界線の太さ |
border-0 から border-8
|
境界線の太さを設定。数値は1pxの倍数。 |
border-2 , border-4 など。 |
ボーダー | 境界線のスタイル |
border-solid , border-dashed , border-dotted
|
境界線のスタイルを設定。実線、破線、点線。 | |
ボーダー | 境界線の色 | border-color |
境界線の色を設定。 |
border-red-500 , border-blue-200 など。 |
ボーダー | 角丸 |
rounded-none から rounded-full
|
要素の角の丸みを設定。 |
rounded-sm , rounded-lg , rounded-xl , rounded-2xl , rounded-3xl の6段階。 |
レイアウト | パディング | p-4 |
要素の上下左右に16pxのパディングを追加する |
pl-4 (左)、pr-4 (右)、pt-4 (上)、pb-4 (下)のように方向を指定することもできる |
レイアウト | マージン | m-4 |
要素の上下左右に16pxのマージンを追加する | パディングと同様に、ml-4 (左)、mr-4 (右)、mt-4 (上)、mb-4 (下)のように方向を指定することもできる |
レイアウト | パディング |
p-0 から p-64
|
全方向のパディングを設定。数値は4pxの倍数。 |
pl-4 , pr-8 のように特定の方向のパディングも設定可能。 |
レイアウト | マージン(水平方向) | mx-auto |
水平方向のマージンを自動に設定し、要素を中央揃え。 |
ml-4 , mr-8 のように特定の方向のマージンも設定可能。 |
レイアウト | マージン(上方向) |
mt-0 から mt-96
|
上マージンを設定。数値は4pxの倍数。 |
mb-4 , my-8 のように他の方向や複数方向のマージンも設定可能。 |
レイアウト | 幅 |
w-0 から w-screen
|
要素の幅を設定。 |
w-1/2 , w-1/3 , w-2/3 のように画面の一部の幅も設定可能。 |
影 | 影 |
shadow-sm から shadow-2xl
|
要素に影を追加。 |
shadow-md , shadow-lg , shadow-xl の5段階。 |
フレックスボックス | フレックスの方向 | flex-row |
フレックスアイテムを横方向に並べる |
flex-row-reverse 、flex-col 、flex-col-reverse もある |
フレックスボックス | フレックスアイテムの配置 | justify-center |
フレックスアイテムを中央揃えにする |
justify-start 、justify-end 、justify-between 、justify-around もある |
これらは、Tailwind CSSで提供されている多数のユーティリティクラスのほんの一部です。Tailwind CSSを使うことで、ほとんどのスタイリングをHTMLのクラス名だけで実現することができます。
例えば、ボタンを作る際には以下のようなクラス名を使うことができます。
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
Click Me
</button>
このように、Tailwind CSSのユーティリティクラスを組み合わせることで、簡単に見た目の良いUIコンポーネントを作ることができます。また、クラス名から直感的にスタイルを理解できるため、メンテナンス性も高くなります。
他にも有用なクラスは多く、例えば以下のようなものが挙げられます。
スタイルの種類 | カテゴリー | クラス | 説明 | 追加情報 |
---|---|---|---|---|
レイアウト | 位置指定(Position) |
static , fixed , absolute , relative , sticky
|
要素の位置を指定。特に absolute と relative はよく使われる。 |
top-0 , right-0 , bottom-0 , left-0 などと組み合わせて使用することが多い。 |
レイアウト | Flexbox |
flex , flex-row , flex-col , flex-wrap , justify-start , justify-end , justify-center , items-start , items-end , items-center
|
Flexboxを使ってレイアウトを組む際に使用。要素の配置や整列を柔軟に制御。 |
flex-1 , flex-auto , flex-initial , flex-none などを使って、アイテムの幅を調整することもできる。 |
レイアウト | Grid |
grid , grid-cols-1 から grid-cols-12 , grid-rows-1 から grid-rows-6 , gap-0 から gap-64
|
Gridレイアウトを組む際に使用。行と列の数を指定し、間隔を設定。 |
col-span-1 から col-span-12 , row-span-1 から row-span-6 を使って、アイテムが占めるセルの数を指定できる。 |
レイアウト | Display |
block , inline-block , inline , flex , grid , hidden
|
要素の表示方法を指定。レイアウトを組む上で重要な役割。 |
table , table-row , table-cell などのクラスを使って、テーブルレイアウトを組むこともできる。 |
レイアウト | Z-index |
z-0 から z-50
|
要素の重なり順を指定。数値が大きいほど前面に表示。 |
z-auto を使うと、要素の重なり順をブラウザのデフォルトに従って自動的に決定できる。 |
視覚効果 | Opacity |
opacity-0 から opacity-100
|
要素の不透明度を指定。0 は完全に透明、100 は完全に不透明。 |
group-hover:opacity-75 のように、疑似クラスと組み合わせて使用することで、インタラクティブな効果を実現できる。 |
アニメーション | Transition |
transition , transition-all , transition-colors , transition-opacity , duration-150 から duration-1000 , ease-linear , ease-in , ease-out , ease-in-out
|
要素の状態変化に伴うアニメーションを指定。対象のプロパティ、所要時間、タイミング関数などを設定。 |
delay-75 から delay-1000 を使って、アニメーションの開始を遅らせることもできる。 |
アニメーション | Transform |
transform , scale-0 から scale-150 , rotate-0 から rotate-180 , translate-x-0 から translate-x-64 , translate-y-0 から translate-y-64 , skew-x-0 から skew-x-12 , skew-y-0 から skew-y-12
|
要素の変形を指定。拡大縮小、回転、平行移動、傾斜などが可能。 |
origin-center , origin-top , origin-top-right , origin-right , origin-bottom-right , origin-bottom , origin-bottom-left , origin-left , origin-top-left を使って、変形の原点を指定できる。 |
Tailwindを使ってトースト下部にバーをつけたりもできる
Inline CSSでいいんじゃない?いいえ、Tailwind CSSには大きな利点があります
Inline CSSを使えば、スタイルを直接HTMLタグに書き込むことができるので、シンプルで手軽だと思うかもしれません。しかし、実際のWebサイト制作では、Tailwind CSSのようなユーティリティファーストのCSSフレームワークを使う方が断然便利です。特に、レスポンシブデザインを実現する際には、Tailwind CSSの真価が発揮されます。
スマホ幅への対応で困らないTailwind CSS
Inline CSSでレスポンシブデザインを実装しようとすると、メディアクエリを駆使して、画面幅に応じてスタイルを切り替える必要があります。しかし、これは非常に面倒で、コードも煩雑になりがちです。
一方、Tailwind CSSでは、あらかじめ用意された豊富なレスポンシブユーティリティクラスを使うことで、簡単にレスポンシブデザインを実現できます。例えば、md:text-lg
というクラスを使えば、中屋サイズ(768px以上)の画面幅では、テキストサイズを大きくすることができます。同様に、sm:hidden
というクラスを使えば、小さい画面幅(640px以下)では、要素を非表示にすることができます。
このように、Tailwind CSSのレスポンシブユーティリティクラスを使えば、メディアクエリを直接書く必要がなく、スマホ幅への対応も簡単です。
一貫性のあるデザインを実現するTailwind CSS
Inline CSSを使っていると、スタイルの定義が分散してしまい、一貫性のあるデザインを維持するのが難しくなります。特に、複数の開発者が同じプロジェクトに関わる場合、スタイルの不整合が起こりやすくなります。
Tailwind CSSでは、あらかじめ定義されたデザインシステムに基づいて、一貫性のあるスタイルを適用することができます。例えば、bg-blue-500
というクラスを使えば、背景色を青色に設定できますが、この色は、Tailwind CSSのデフォルトのカラーパレットに含まれる色です。このカラーパレットは、プロジェクト全体で共有されるので、どこで使っても同じ色が適用されます。
また、Tailwind CSSでは、フォントサイズ、余白、境界線など、さまざまなスタイルプロパティに対して、統一された命名規則が使われています。これにより、コードの可読性が向上し、チーム全体で一貫性のあるスタイルを適用しやすくなります。
まとめ
Inline CSSは手軽ですが、レスポンシブデザインへの対応や、一貫性のあるデザインの実現には向いていません。Tailwind CSSなら、レスポンシブユーティリティクラスを使ってスマホ幅への対応も簡単ですし、デザインシステムに基づいた一貫性のあるスタイルを適用することもできます。
サイズ判定のカスタム方法
Tailwind CSSは、デフォルトで5つのレスポンシブブレークポイント(sm
、md
、lg
、xl
、2xl
)を提供しています。これらのブレークポイントは、一般的なデバイスの画面サイズに合わせて設定されていますが、プロジェクトによっては、独自のブレークポイントを設定したい場合もあるでしょう。
実は、Tailwind CSSでは、これらのブレークポイントを簡単にカスタマイズすることができます。ここでは、その方法を解説します。
Tailwind CSSの設定ファイルを作成する
まず、Tailwind CSSの設定ファイル(tailwind.config.js
)を作成します。このファイルを使って、Tailwind CSSのさまざまな設定をカスタマイズすることができます。
プロジェクトのルートディレクトリにtailwind.config.js
ファイルを作成し、以下のような内容を記述します。
module.exports = {
purge: [],
theme: {
extend: {},
},
variants: {},
plugins: [],
}
レスポンシブブレークポイントを設定する
次に、theme
セクションの中で、screens
オプションを使って、レスポンシブブレークポイントを設定します。
module.exports = {
theme: {
screens: {
'xs': '480px',
'sm': '640px',
'md': '768px',
'lg': '1024px',
'xl': '1280px',
'2xl': '1536px',
},
},
}
ここでは、デフォルトのブレークポイントに加えて、xs
(480px)というブレークポイントを追加しています。また、sm
以降のブレークポイントの値を変更して、独自の値を設定しています。
カスタムしたブレークポイントを使う
設定ファイルを変更したら、あとは通常通り、Tailwind CSSのユーティリティクラスを使ってスタイルを適用するだけです。
<div class="bg-blue-500 xs:bg-red-500 sm:bg-green-500 md:bg-yellow-500 lg:bg-purple-500">
レスポンシブな背景色
</div>
ここでは、画面幅に応じて、背景色が変化するようになっています。xs
では赤、sm
では緑、md
では黄色、lg
では紫、デフォルトでは青になります。
まとめ
Tailwind CSSのレスポンシブブレークポイントは、設定ファイル(tailwind.config.js
)のtheme
セクションで、screens
オプションを使ってカスタマイズすることができます。独自のブレークポイントを追加したり、デフォルトのブレークポイントの値を変更したりすることで、プロジェクトに合ったレスポンシブデザインを実現できます。
Tailwind CSSの条件付きユーティリティクラス一覧
Tailwind CSSでは、さまざまな条件に基づいてスタイルを適用するための、条件付きのユーティリティクラスが用意されています。ここでは、それらのクラスを一覧表にまとめました。
はい、その認識で合っています。first:
接頭辞を使って、テーブルのヘッダー行に特別なスタイルを適用することができます。他にも、条件付きのユーティリティクラスを使って、テーブルのスタイリングをより細かく制御することができます。
それでは、具体的な使用例を追加した一覧表を再生成しましょう。
Tailwind CSSの条件付きユーティリティクラス一覧
条件 | 接頭辞 | 説明 | 例 | 使用例 |
---|---|---|---|---|
レスポンシブ |
sm: , md: , lg: , xl: , 2xl:
|
画面幅に応じてスタイルを適用する | md:text-lg |
モバイル画面では縦並びのレイアウトを適用し、デスクトップ画面では横並びのレイアウトを適用する |
ホバー | hover: |
マウスホバー時にスタイルを適用する | hover:bg-blue-500 |
ボタンにホバー効果を追加して、インタラクティブな印象を与える |
フォーカス | focus: |
フォーカス時にスタイルを適用する | focus:outline-none |
フォーム入力欄にフォーカス時のスタイルを適用して、現在の入力位置をわかりやすくする |
アクティブ | active: |
アクティブ時(クリック時など)にスタイルを適用する | active:bg-red-500 |
ボタンをクリックした時に、背景色を変更してフィードバックを与える |
無効化 | disabled: |
無効化された要素にスタイルを適用する | disabled:opacity-50 |
無効化されたボタンの外観を変更して、クリックできないことを明示する |
奇数行 | odd: |
奇数行にスタイルを適用する(テーブルなど) | odd:bg-gray-100 |
テーブルの奇数行に背景色を適用して、読みやすさを向上させる |
偶数行 | even: |
偶数行にスタイルを適用する(テーブルなど) | even:bg-gray-200 |
テーブルの偶数行に背景色を適用して、奇数行とのコントラストをつける |
最初の要素 | first: |
最初の要素にスタイルを適用する | first:pt-0 |
リストの最初の項目の上部マージンを削除して、レイアウトを整える |
first:text-blue-500 |
テーブルのヘッダー行に特別な文字色を適用して、見出しとして強調する | |||
最後の要素 | last: |
最後の要素にスタイルを適用する | last:pb-0 |
リストの最後の項目の下部マージンを削除して、レイアウトを整える |
last:border-b-0 |
テーブルの最後の行のボーダーを削除して、テーブルの終端を示す | |||
単独の要素 | only: |
単独の要素(兄弟要素がない場合)にスタイルを適用する | only:mb-0 |
単独の要素の下部マージンを削除して、他の要素とのスペースを調整する |
空の要素 | empty: |
空の要素(子要素がない場合)にスタイルを適用する | empty:hidden |
空のテーブルセルを非表示にして、レイアウトを整える |
子要素 |
group-hover: , group-focus: , group-active:
|
親要素の状態に基づいて、子要素にスタイルを適用する | group-hover:opacity-75 |
カード全体にホバー効果を適用し、カード内のテキストの不透明度を変更する |
この一覧表では、各条件に対して具体的な使用例を1~2個追加しました。これらの例を参考にすることで、条件付きのユーティリティクラスをさまざまな場面で活用できるはずです。
例えば、first:
接頭辞を使ってテーブルのヘッダー行に特別なスタイルを適用したり、last:
接頭辞を使ってテーブルの最後の行のボーダーを削除したりすることができます。また、group-hover:
接頭辞を使って、カード全体にホバー効果を適用し、カード内の子要素のスタイルを変更することもできます。
これらの使用例を参考に、Tailwind CSSの条件付きユーティリティクラスを活用して、より洗練されたデザインを実現してください。
以上が、具体的な使用例を追加したTailwind CSSの条件付きユーティリティクラスの一覧表になります。これらの例を参考に、条件付きのユーティリティクラスをさまざまな場面で活用し、よりリッチなWebサイトやアプリケーションを制作してみてください。
これらの条件付きユーティリティクラスを使うことで、さまざまな状況に応じて適切なスタイルを適用することができます。例えば、hover:
接頭辞を使えば、マウスホバー時にスタイルを変更することができますし、group-hover:
接頭辞を使えば、親要素のホバー状態に基づいて子要素のスタイルを変更することができます。
Tailwind CSSの条件付きユーティリティクラス例
モバイル画面では縦並びのレイアウトを適用し、デスクトップ画面では横並びのレイアウトを適用する例を示しましょう
<div class="flex flex-col md:flex-row">
<div class="bg-blue-500 text-white p-4 m-2">
Item 1
</div>
<div class="bg-blue-500 text-white p-4 m-2">
Item 2
</div>
<div class="bg-blue-500 text-white p-4 m-2">
Item 3
</div>
</div>
このコードでは、以下のようなことが行われています:
-
最外層の
<div>
要素にflex
クラスを適用して、Flexboxレイアウトを有効にしています。 -
デフォルトでは
flex-col
クラスを適用して、子要素を縦並びにしています。これがモバイル画面でのレイアウトになります。 -
md:
接頭辞を使って、ミディアムサイズ(デスクトップ画面)以上の画面幅に対してflex-row
クラスを適用しています。これにより、デスクトップ画面では子要素が横並びになります。 -
子要素の
<div>
要素には、背景色(bg-blue-500
)、文字色(text-white
)、パディング(p-4
)、マージン(m-2
)を適用しています。
このコードを実行すると、モバイル画面では以下のように縦並びのレイアウトが表示されます:
+------------+
| Item 1 |
+------------+
| Item 2 |
+------------+
| Item 3 |
+------------+
一方、デスクトップ画面では以下のように横並びのレイアウトが表示されます:
+------------++------------++------------+
| Item 1 || Item 2 || Item 3 |
+------------++------------++------------+
first:
接頭辞を使って、テーブルのヘッダー行に特別なスタイルを適用する例を示しましょう。
<table class="table-auto w-full">
<thead>
<tr>
<th class="px-4 py-2 first:bg-blue-500 first:text-white">Header 1</th>
<th class="px-4 py-2 first:bg-blue-500 first:text-white">Header 2</th>
<th class="px-4 py-2 first:bg-blue-500 first:text-white">Header 3</th>
</tr>
</thead>
<tbody>
<tr>
<td class="border px-4 py-2">Row 1, Cell 1</td>
<td class="border px-4 py-2">Row 1, Cell 2</td>
<td class="border px-4 py-2">Row 1, Cell 3</td>
</tr>
<tr>
<td class="border px-4 py-2">Row 2, Cell 1</td>
<td class="border px-4 py-2">Row 2, Cell 2</td>
<td class="border px-4 py-2">Row 2, Cell 3</td>
</tr>
<tr>
<td class="border px-4 py-2">Row 3, Cell 1</td>
<td class="border px-4 py-2">Row 3, Cell 2</td>
<td class="border px-4 py-2">Row 3, Cell 3</td>
</tr>
</tbody>
</table>
このコードでは、以下のようなことが行われています:
-
<table>
要素にtable-auto
クラスを適用して、テーブルのレイアウトを自動的に調整しています。また、w-full
クラスを適用して、テーブルの幅を100%にしています。 -
<thead>
内の<th>
要素にfirst:
接頭辞を使ったクラスを適用しています。-
first:bg-blue-500
:最初の<th>
要素の背景色を青に設定。 -
first:text-white
:最初の<th>
要素の文字色を白に設定。
-
-
<tbody>
内の<td>
要素には、ボーダー(border
)、パディング(px-4 py-2
)を適用しています。
このコードを実行すると、以下のようなテーブルが表示されます:
+---------------+---------------+---------------+
| Header 1 | Header 2 | Header 3 |
+---------------+---------------+---------------+
| Row 1, Cell 1 | Row 1, Cell 2 | Row 1, Cell 3 |
+---------------+---------------+---------------+
| Row 2, Cell 1 | Row 2, Cell 2 | Row 2, Cell 3 |
+---------------+---------------+---------------+
| Row 3, Cell 1 | Row 3, Cell 2 | Row 3, Cell 3 |
+---------------+---------------+---------------+
最初の<th>
要素(ヘッダー行)には、青い背景色と白い文字色が適用されています。これにより、ヘッダー行が目立ち、テーブルの構造が明確になります。
このように、first:
接頭辞を使うことで、テーブルのヘッダー行に特別なスタイルを簡単に適用することができます。同様の方法で、last:
接頭辞を使えば最後の行にスタイルを適用することもできます。
ReactでTailwind CSSのクラス名を隠蔽して再利用する方法
ReactでTailwind CSSを使うと、コンポーネントのスタイリングが非常に簡単になります。しかし、Tailwind CSSのクラス名は長くなりがちで、JSXのコード内で直接使うと可読性が下がってしまうことがあります。
そこで、長いクラス名を再利用可能な形で隠蔽する方法を紹介します。この方法を使えば、JSXのコードをすっきりと保ちつつ、スタイリングの一貫性を保つことができます。
クラス名を変数に格納する
まず、長いクラス名を変数に格納しましょう。これは、ES6の機能である変数の分割代入を使って実現できます。
const Card = () => {
const cardClasses = "p-4 border rounded-lg bg-white shadow-lg w-60 m-auto mt-20 text-sm";
return (
<div className={cardClasses}>
{/* カードの内容 */}
</div>
);
};
ここでは、cardClasses
という変数にカードのスタイルを表すクラス名を格納しています。そして、<div>
要素のclassName
属性で、この変数を使っています。
クラス名をオブジェクトに格納する
複数のバリエーションがあるコンポーネントの場合は、クラス名をオブジェクトに格納すると便利です。
const Button = ({ primary }) => {
const buttonClasses = {
base: "py-2 px-4 rounded",
primary: "bg-blue-500 text-white",
secondary: "bg-gray-200 text-gray-700",
};
return (
<button className={`${buttonClasses.base} ${primary ? buttonClasses.primary : buttonClasses.secondary}`}>
{/* ボタンの内容 */}
</button>
);
};
ここでは、buttonClasses
オブジェクトに、ボタンの基本スタイル(base
)とバリエーション(primary
とsecondary
)のクラス名を格納しています。そして、<button>
要素のclassName
属性で、これらのクラス名を条件に応じて組み合わせています。
まとめ
Tailwind CSSのクラス名を変数やオブジェクトに格納することで、JSXのコードをすっきりと保ちつつ、スタイリングの一貫性を保つことができます。この方法は、特に大規模なプロジェクトで威力を発揮します。
雑にまとめたもの
スタイルの種類 | カテゴリー | クラス | 説明 | 追加情報 | 追加情報2 |
---|---|---|---|---|---|
テキストの色 | 色を指定する | text-gray-700 | テキストをグレー色にする | text-{color}-{shade} の形式で様々な色を指定できる | - |
テキストのサイズ | サイズを指定する | text-base | テキストのサイズを基本サイズにする | text-{size} の形式で様々なサイズを指定できる |
text-xs , text-sm , text-lg , text-xl , text-2xl , text-3xl , text-4xl , text-5xl , text-6xl など |
テキストのサイズ | サイズを指定する | text-xl | テキストのサイズを特大サイズにする | text-{size} の形式で様々なサイズを指定できる |
text-xs , text-sm , text-lg , text-xl , text-2xl , text-3xl , text-4xl , text-5xl , text-6xl など |
テキストの配置 | 配置を指定する | text-center | テキストを中央揃えにする | text-{alignment} の形式で様々な配置を指定できる |
text-left , text-right , text-justify
|
フォントの太さ | 太さを指定する | font-bold | フォントを太字にする | font-{weight} の形式で様々な太さを指定できる |
font-normal , font-medium , font-semibold , font-extrabold , font-black
|
背景色 | 色を指定する | bg-gray-50 | 背景色をグレー色にする | bg-{color}-{shade} の形式で様々な色を指定できる | - |
余白 | パディングを指定する | pt-10 | 上の余白を2.5remにする | p{t|r|b|l|x|y}-{size} の形式で様々な余白を指定できる |
pt-0 , pt-1 , pt-2 , pt-3 , pt-4 , pt-5 , pt-6 , pt-8 , pt-12 , pt-16 , pt-20 , pt-24 など |
余白 | パディングを指定する | px-6 | 左右の余白を1.5remにする | p{t|r|b|l|x|y}-{size} の形式で様々な余白を指定できる |
px-0 , px-1 , px-2 , px-3 , px-4 , px-5 , px-6 , px-8 , px-10 , px-12 , px-16 , px-20 , px-24 など |
余白 | パディングを指定する | py-4 | 上下の余白を1remにする | p{t|r|b|l|x|y}-{size} の形式で様々な余白を指定できる |
py-0 , py-1 , py-2 , py-3 , py-4 , py-5 , py-6 , py-8 , py-10 , py-12 , py-16 , py-20 , py-24 など |
余白 | マージンを指定する | mb-2 | 下のマージンを0.5remにする | m{t|r|b|l|x|y}-{size} の形式で様々なマージンを指定できる |
mb-0 , mb-1 , mb-2 , mb-3 , mb-4 , mb-5 , mb-6 , mb-8 , mb-10 , mb-12 , mb-16 , mb-20 , mb-24 など |
レイアウト | グリッドを指定する | grid | グリッドレイアウトを適用する | display: grid; を適用する | - |
レイアウト | アイテムの配置を指定する | place-items-center | アイテムを中央揃えにする | place-items-{alignment} の形式で様々な配置を指定できる |
place-items-start , place-items-end , place-items-center , place-items-stretch
|
レイアウト | 最大幅を指定する | max-w-sm | 最大幅を24remに制限する | max-w-{size} の形式で様々な最大幅を指定できる |
max-w-xs , max-w-sm , max-w-md , max-w-lg , max-w-xl , max-w-2xl , max-w-3xl , max-w-4xl , max-w-5xl , max-w-6xl , max-w-7xl など |
レイアウト | オーバーフローを指定する | overflow-hidden | オーバーフローを非表示にする | overflow-{behavior} の形式で様々なオーバーフロー動作を指定できる |
overflow-auto , overflow-hidden , overflow-visible , overflow-scroll
|
ボックスモデル | 角丸を指定する | rounded | 要素を角丸にする | rounded-{size} の形式で様々な角丸サイズを指定できる |
rounded-none , rounded-sm , rounded-md , rounded-lg , rounded-xl , rounded-2xl , rounded-3xl , rounded-full など |
ボックスモデル | 影を指定する | shadow-lg | 要素に大きめの影をつける | shadow-{size} の形式で様々な影のサイズを指定できる |
shadow-sm , shadow , shadow-md , shadow-xl , shadow-2xl , shadow-inner , shadow-none など |
サイズ | 幅を指定する | w-full | 要素の幅を100%にする | w-{size} の形式で様々な幅を指定できる |
w-0 , w-1 , w-2 , w-3 , w-4 , w-5 , w-6 , w-8 , w-10 , w-12 , w-16 , w-20 , w-24 , w-32 , w-40 , w-48 , w-56 , w-64 など |
スタイルの種類 | カテゴリー | クラス | 説明 | 追加情報 |
---|---|---|---|---|
テキストの色 | 色を指定する | text-red-500 | テキストを赤色にする | text-{color}-{shade} の形式で様々な色を指定できる |
text-blue-500 | テキストを青色にする | text-{color}-{shade} の形式で様々な色を指定できる | ||
text-green-500 | テキストを緑色にする | text-{color}-{shade} の形式で様々な色を指定できる | ||
テキストの配置 | 水平方向の配置 | text-left | テキストを左寄せにする | - |
text-center | テキストを中央寄せにする | - | ||
text-right | テキストを右寄せにする | - | ||
垂直方向の配置 | align-baseline | テキストをベースラインに揃える | align-top, align-middle, align-bottom もある | |
テキストの装飾 | 下線 | underline | テキストに下線をつける | no-underline で下線を消すこともできる |
取り消し線 | line-through | テキストに取り消し線をつける | no-line-through で取り消し線を消すこともできる | |
テキストの大文字・小文字 | 大文字・小文字を変換する | uppercase | テキストをすべて大文字にする | - |
lowercase | テキストをすべて小文字にする | - | ||
capitalize | テキストの先頭文字を大文字にする | - | ||
テキストの行間隔 | 行の高さを指定する | leading-none | 行の高さを0に設定する | leading-tight, leading-snug, leading-normal, leading-relaxed, leading-loose もある |
ホワイトスペース | 連続するスペースの扱い方 | whitespace-normal | 連続するスペースを通常通り扱う | - |
whitespace-nowrap | 連続するスペースをまとめる | - | ||
whitespace-pre | 連続するスペースをそのまま表示する | - | ||
whitespace-pre-line | 連続するスペースをまとめ、必要な改行は行う | - | ||
whitespace-pre-wrap | 連続するスペースをそのまま表示し、必要な改行は行う | - |
スタイルの種類 | カテゴリー | クラス | 説明 | 追加情報 |
---|---|---|---|---|
テキスト | フォントの太さ | font-thin | テキストを極細にする | font-extralight, font-light, font-normal, font-medium, font-semibold, font-bold, font-extrabold, font-black もある |
テキスト | フォントサイズ | text-xs | テキストを超小さいサイズにする | text-sm, text-base, text-lg, text-xl, text-2xl, text-3xl, text-4xl, text-5xl, text-6xl, text-7xl, text-8xl, text-9xl もある |
テキスト | フォントの色 | text-red-500 | テキストを赤色にする | text-{color}-{shade} の形式で様々な色を指定できる |
レイアウト | ディスプレイ | block | 要素をブロックレベル要素として表示する | inline, inline-block, flex, inline-flex, grid, inline-grid, hidden なども使用可能 |
レイアウト | フレックス | flex | 要素をフレックスコンテナとして表示する | flex-row, flex-col, flex-wrap, flex-nowrap, flex-1, flex-auto, flex-initial, flex-none なども使用可能 |
間隔 | パディング | p-4 | 要素の上下左右に16pxのパディングを追加する | p-{size}, pt-{size}, pr-{size}, pb-{size}, pl-{size} の形式で様々なサイズを指定できる |
間隔 | マージン | m-4 | 要素の上下左右に16pxのマージンを追加する | m-{size}, mt-{size}, mr-{size}, mb-{size}, ml-{size} の形式で様々なサイズを指定できる |
サイズ | 幅 | w-64 | 要素の幅を256pxに設定する | w-{size}, w-auto, w-1/2, w-full など様々な指定方法がある |
サイズ | 高さ | h-64 | 要素の高さを256pxに設定する | h-{size}, h-auto, h-full, h-screen など様々な指定方法がある |
背景 | 背景色 | bg-blue-500 | 要素の背景色を青色にする | bg-{color}-{shade} の形式で様々な色を指定できる |
ボーダー | ボーダーの幅 | border-2 | 要素のボーダーを2pxの幅にする | border, border-0, border-4, border-8 なども使用可能 |
ボーダー | ボーダーの色 | border-green-500 | 要素のボーダーを緑色にする | border-{color}-{shade} の形式で様々な色を指定できる |
スタイルの種類 | カテゴリー | クラス | 説明 | 追加情報 |
---|---|---|---|---|
フォントの太さ | 太字 | font-bold |
テキストを太字にする |
font-normal 、font-medium 、font-semibold 、font-extrabold 、font-black もある |
薄い | font-light |
テキストを薄くする |
font-thin もある |
|
標準 | font-normal |
テキストを標準の太さにする | - | |
中程度 | font-medium |
テキストを中程度の太さにする | - | |
セミボールド | font-semibold |
テキストをセミボールドにする | - | |
非常に太字 | font-extrabold |
テキストを非常に太字にする | - | |
極太 | font-black |
テキストを極太にする | - | |
フォントサイズ | 小さい | text-xs |
テキストを非常に小さくする |
text-sm 、text-base 、text-lg 、text-xl 、text-2xl 、text-3xl 、text-4xl 、text-5xl 、text-6xl もある |
text-sm |
テキストを小さくする |
text-base 、text-lg 、text-xl 、text-2xl 、text-3xl 、text-4xl 、text-5xl 、text-6xl もある |
||
標準 | text-base |
テキストを標準の大きさにする | - | |
大きい | text-lg |
テキストを大きくする |
text-xl 、text-2xl 、text-3xl 、text-4xl 、text-5xl 、text-6xl もある |
|
非常に大きい | text-xl |
テキストを非常に大きくする |
text-2xl 、text-3xl 、text-4xl 、text-5xl 、text-6xl もある |
|
極端に大きい | text-2xl |
テキストを極端に大きくする |
text-3xl 、text-4xl 、text-5xl 、text-6xl もある |
|
非常に極端に大きい | text-3xl |
テキストを非常に極端に大きくする |
text-4xl 、text-5xl 、text-6xl もある |
|
極端に極端に大きい | text-4xl |
テキストを極端に極端に大きくする |
text-5xl 、text-6xl もある |
|
極端に極端に極端に大きい | text-5xl |
テキストを極端に極端に極端に大きくする |
text-6xl もある |
|
極端に極端に極端に極端に大きい | text-6xl |
テキストを極端に極端に極端に極端に大きくする | - | |
フォントファミリー | フォントを変更 | font-sans |
サンセリフフォントを使用する |
font-serif 、font-mono もある |
font-serif |
セリフフォントを使用する |
font-mono もある |
||
font-mono |
モノスペースフォントを使用する | - |
雑まとめ2
このコードは、React を使用してお問い合わせフォームを作成するものです。TailwindCSS を使用してスタイリングが行われています。以下は、このコードで使用されている TailwindCSS のクラスを表にまとめたものです。
スタイルの種類 | カテゴリー | クラス | 説明 | 追加情報 | 追加情報2 |
---|---|---|---|---|---|
レイアウト | 余白を指定する | space-y-8 | 垂直方向に要素間のスペースを 2rem 設ける | space-y-{size} の形式で様々なスペースサイズを指定できる |
space-y-0 , space-y-1 , space-y-2 , space-y-3 , space-y-4 , space-y-5 , space-y-6 , space-y-8 , space-y-10 , space-y-12 , space-y-16 , space-y-20 , space-y-24 など |
レイアウト | 余白を指定する | space-y-2 | 垂直方向に要素間のスペースを 0.5rem 設ける | space-y-{size} の形式で様々なスペースサイズを指定できる |
space-y-0 , space-y-1 , space-y-2 , space-y-3 , space-y-4 , space-y-5 , space-y-6 , space-y-8 , space-y-10 , space-y-12 , space-y-16 , space-y-20 , space-y-24 など |
レイアウト | 余白を指定する | space-y-4 | 垂直方向に要素間のスペースを 1rem 設ける | space-y-{size} の形式で様々なスペースサイズを指定できる |
space-y-0 , space-y-1 , space-y-2 , space-y-3 , space-y-4 , space-y-5 , space-y-6 , space-y-8 , space-y-10 , space-y-12 , space-y-16 , space-y-20 , space-y-24 など |
レイアウト | グリッドを指定する | grid | グリッドレイアウトを適用する | display: grid; を適用する | - |
レイアウト | グリッドの列数を指定する | grid-cols-2 | グリッドの列数を 2 に設定する | grid-cols-{count} の形式で様々な列数を指定できる |
grid-cols-1 , grid-cols-2 , grid-cols-3 , grid-cols-4 , grid-cols-5 , grid-cols-6 , grid-cols-7 , grid-cols-8 , grid-cols-9 , grid-cols-10 , grid-cols-11 , grid-cols-12 など |
レイアウト | グリッドのギャップを指定する | gap-4 | グリッドのギャップを 1rem に設定する | gap-{size} の形式で様々なギャップサイズを指定できる |
gap-0 , gap-1 , gap-2 , gap-3 , gap-4 , gap-5 , gap-6 , gap-8 , gap-10 , gap-12 , gap-16 , gap-20 , gap-24 など |
レイアウト | Flexbox を指定する | flex | Flexbox レイアウトを適用する | display: flex; を適用する | - |
レイアウト | Flexbox のアイテム配置を指定する | justify-center | Flexbox のアイテムを中央揃えにする | justify-{alignment} の形式で様々な配置を指定できる |
justify-start , justify-end , justify-center , justify-between , justify-around , justify-evenly
|
テキストのサイズ | サイズを指定する | text-3xl | テキストのサイズを 1.875rem に設定する | text-{size} の形式で様々なサイズを指定できる |
text-xs , text-sm , text-base , text-lg , text-xl , text-2xl , text-3xl , text-4xl , text-5xl , text-6xl , text-7xl , text-8xl , text-9xl など |
テキストのサイズ | サイズを指定する | text-sm | テキストのサイズを 0.875rem に設定する | text-{size} の形式で様々なサイズを指定できる |
text-xs , text-sm , text-base , text-lg , text-xl , text-2xl , text-3xl , text-4xl , text-5xl , text-6xl , text-7xl , text-8xl , text-9xl など |
フォントの太さ | 太さを指定する | font-bold | フォントを太字にする | font-{weight} の形式で様々な太さを指定できる |
font-thin , font-extralight , font-light , font-normal , font-medium , font-semibold , font-bold , font-extrabold , font-black
|
フォントの太さ | 太さを指定する | font-medium | フォントを中太にする | font-{weight} の形式で様々な太さを指定できる |
font-thin , font-extralight , font-light , font-normal , font-medium , font-semibold , font-bold , font-extrabold , font-black
|
行の高さ | 高さを指定する | leading-none | 行の高さを 1 に設定する | leading-{size} の形式で様々な行の高さを指定できる |
leading-none , leading-tight , leading-snug , leading-normal , leading-relaxed , leading-loose
|
背景色 | 色を指定する | bg-zinc-100 | 背景色を zinc-100 に設定する | bg-{color}-{shade} の形式で様々な色を指定できる | - |
背景色 | 色を指定する | bg-blue-500 | 背景色を blue-500 に設定する | bg-{color}-{shade} の形式で様々な色を指定できる | - |
背景色 | 色を指定する | hover:bg-blue-600 | ホバー時の背景色を blue-600 に設定する | hover:bg-{color}-{shade} の形式で様々な色を指定できる | - |
背景色 | 色を指定する | active:bg-blue-700 | アクティブ時の背景色を blue-700 に設定する | active:bg-{color}-{shade} の形式で様々な色を指定できる | - |
テキストの色 | 色を指定する | text-zinc-500 | テキストの色を zinc-500 に設定する | text-{color}-{shade} の形式で様々な色を指定できる | - |
テキストの色 | 色を指定する | dark:text-zinc-400 | ダークモード時のテキストの色を zinc-400 に設定する | dark:text-{color}-{shade} の形式で様々な色を指定できる | - |
テキストの色 | 色を指定する | text-white | テキストの色を白に設定する | text-{color} の形式で様々な色を指定できる | - |
ボックスモデル | 角丸を指定する | rounded-md | 要素の角を中程度の丸みにする | rounded-{size} の形式で様々な角丸サイズを指定できる |
rounded-none , rounded-sm , rounded , rounded-md , rounded-lg , rounded-xl , rounded-2xl , rounded-3xl , rounded-full など |
ボックスモデル | 角丸を指定する | rounded-sm | 要素の角を小さめの丸みにする | rounded-{size} の形式で様々な角丸サイズを指定できる |
rounded-none , rounded-sm , rounded , rounded-md , rounded-lg , rounded-xl , rounded-2xl , rounded-3xl , rounded-full など |
ボックスモデル | ボーダーを指定する | border | 要素にボーダーを追加する | border-{width} の形式で様々なボーダー幅を指定できる |
border , border-0 , border-2 , border-4 , border-8 など |
サイズ | 高さを指定する | h-10 | 要素の高さを 2.5rem に設定する | h-{size} の形式で様々な高さを指定できる |
h-0 , h-1 , h-2 , h-3 , h-4 , h-5 , h-6 , h-8 , h-10 , h-12 , h-16 , h-20 , h-24 , h-32 , h-40 , h-48 , h-56 , h-64 など |
サイズ | 幅を指定する | w-full | 要素の幅を 100% に設定する | w-{size} の形式で様々な幅を指定できる |
w-0 , w-1 , w-2 , w-3 , w-4 , w-5 , w-6 , w-8 , w-10 , w-12 , w-16 , w-20 , w-24 , w-32 , w-40 , w-48 , w-56 , w-64 , w-1/2 , w-1/3 , w-2/3 , w-1/4 , w-2/4 , w-3/4 , w-1/5 , w-2/5 , w-3/5 , w-4/5 , w-1/6 , w-2/6 , w-3/6 , w-4/6 , w-5/6 , w-full , w-screen など |
余白 | パディングを指定する | px-3 | 左右のパディングを 0.75rem に設定する | p{t|r|b|l|x|y}-{size} の形式で様々な余白を指定できる |
px-0 , px-1 , px-2 , px-3 , px-4 , px-5 , px-6 , px-8 , px-10 , px-12 , px-16 , px-20 , px-24 , px-32 , px-40 , px-48 , px-56 , px-64 など |
余白 | パディングを指定する | py-2 | 上下のパディングを 0.5rem に設定する | p{t|r|b|l|x|y}-{size} の形式で様々な余白を指定できる |
py-0 , py-1 , py-2 , py-3 , py-4 , py-5 , py-6 , py-8 , py-10 , py-12 , py-16 , py-20 , py-24 , py-32 , py-40 , py-48 , py-56 , py-64 など |
余白 | パディングを指定する | p-4 | 全方向のパディングを 1rem に設定する | p{t|r|b|l|x|y}-{size} の形式で様々な余白を指定できる |
p-0 , p-1 , p-2 , p-3 , p-4 , p-5 , p-6 , p-8 , p-10 , p-12 , p-16 , p-20 , p-24 , p-32 , p-40 , p-48 , p-56 , p-64 など |
余白 | パディングを指定する | px-4 | 左右のパディングを 1rem に設定する | p{t|r|b|l|x|y}-{size} の形式で様々な余白を指定できる |
px-0 , px-1 , px-2 , px-3 , px-4 , px-5 , px-6 , px-8 , px-10 , px-12 , px-16 , px-20 , px-24 , px-32 , px-40 , px-48 , px-56 , px-64 など |
フォーカス | アウトラインを指定する | focus:outline-none | フォーカス時のアウトラインを削除する | - | - |
フォーカス | リングを指定する | focus:ring-2 | フォーカス時のリングを 2px に設定する | focus:ring-{width} の形式で様々なリング幅を指定できる |
focus:ring-0 , focus:ring-1 , focus:ring-2 , focus:ring-4 , focus:ring-8 など |
フォーカス | リングのオフセットを指定する | focus:ring-offset-2 | フォーカス時のリングのオフセットを 2px に設定する | focus:ring-offset-{width} の形式で様々なオフセット幅を指定できる |
focus:ring-offset-0 , focus:ring-offset-1 , focus:ring-offset-2 , focus:ring-offset-4 , focus:ring-offset-8 など |
サイズ | 最小の高さを指定する | min-h-[100px] | 要素の最小の高さを 100px に設定する | min-h-{size} の形式で様々な最小の高さを指定できる |
min-h-0 , min-h-full , min-h-screen など |
mosyaで好きだと思ったTailwindCSS一覧
スタイルの種類 | カテゴリー | クラス | 説明 | 追加情報 |
---|---|---|---|---|
レイアウト | パディング | py-4 | 上下のパディングを1remに設定 | p{t|r|b|l|x|y}-{size} の形式で様々な余白を指定できる |
レイアウト | 最小の高さ | min-h-screen | 要素の最小の高さをビューポートの高さに設定 | min-h-{size} の形式で様々な最小の高さを指定できる |
バックグラウンド | グラデーション | bg-gradient-to-r | 背景を左から右へのグラデーションに設定 | bg-gradient-to-{direction} の形式で様々な方向のグラデーションを指定できる |
バックグラウンド | グラデーションの開始色 | from-purple-300 | グラデーションの開始色を紫の300番に設定 | from-{color}-{shade} の形式で様々な色を指定できる |
バックグラウンド | グラデーションの中間色 | via-pink-200 | グラデーションの中間色をピンクの200番に設定 | via-{color}-{shade} の形式で様々な色を指定できる |
バックグラウンド | グラデーションの終了色 | to-red-200 | グラデーションの終了色を赤の200番に設定 | to-{color}-{shade} の形式で様々な色を指定できる |
バックグラウンド | ダークモードのグラデーションの開始色 | dark:from-gray-900 | ダークモード時のグラデーションの開始色を灰色の900番に設定 | dark:from-{color}-{shade} の形式で様々な色を指定できる |
バックグラウンド | ダークモードのグラデーションの中間色 | dark:via-gray-800 | ダークモード時のグラデーションの中間色を灰色の800番に設定 | dark:via-{color}-{shade} の形式で様々な色を指定できる |
バックグラウンド | ダークモードのグラデーションの終了色 | dark:to-gray-700 | ダークモード時のグラデーションの終了色を灰色の700番に設定 | dark:to-{color}-{shade} の形式で様々な色を指定できる |
フレックスボックス | アイテムの配置 | items-center | フレックスアイテムを縦方向に中央揃えにする | items-{alignment} の形式で様々な配置を指定できる |
フレックスボックス | アイテムの配置 | justify-center | フレックスアイテムを横方向に中央揃えにする | justify-{alignment} の形式で様々な配置を指定できる |
レイアウト | 幅 | w-full | 要素の幅を100%に設定 | w-{size} の形式で様々な幅を指定できる |
レイアウト | 最大の幅 | max-w-md | 要素の最大の幅を28remに設定 | max-w-{size} の形式で様々な最大の幅を指定できる |
レイアウト | マージン | mx-auto | 左右のマージンを自動に設定 | m{t|r|b|l|x|y}-{size} の形式で様々なマージンを指定できる |
バックグラウンド | 背景色 | bg-white | 背景色を白に設定 | bg-{color} の形式で様々な色を指定できる |
ボックスシャドウ | シャドウ | shadow-md | 中程度のシャドウを適用 | shadow-{size} の形式で様々なシャドウのサイズを指定できる |
ボーダー | 角丸 | rounded-lg | 要素の角を大きく丸くする | rounded-{size} の形式で様々な角丸のサイズを指定できる |
レイアウト | オーバーフロー | overflow-hidden | 要素からはみ出した部分を非表示にする | overflow-{visibility} の形式で様々な表示方法を指定できる |
バックグラウンド | ダークモードの背景色 | dark:bg-zinc-900 | ダークモード時の背景色を亜鉛の900番に設定 | dark:bg-{color}-{shade} の形式で様々な色を指定できる |
フレックスボックス | アイテムの配置 | justify-between | フレックスアイテムを両端揃えにする | justify-{alignment} の形式で様々な配置を指定できる |
レイアウト | パディング | px-6 | 左右のパディングを1.5remに設定 | p{t|r|b|l|x|y}-{size} の形式で様々な余白を指定できる |
テキスト | フォントサイズ | text-lg | テキストのフォントサイズを1.125remに設定 | text-{size} の形式で様々なフォントサイズを指定できる |
テキスト | フォントの太さ | font-medium | フォントの太さを中程度に設定 | font-{weight} の形式で様々なフォントの太さを指定できる |
テキスト | テキストの色 | text-gray-700 | テキストの色を灰色の700番に設定 | text-{color}-{shade} の形式で様々な色を指定できる |
テキスト | ダークモードのテキストの色 | dark:text-gray-200 | ダークモード時のテキストの色を灰色の200番に設定 | dark:text-{color}-{shade} の形式で様々な色を指定できる |
テキスト | テキストの色 | text-gray-500 | テキストの色を灰色の500番に設定 | text-{color}-{shade} の形式で様々な色を指定できる |
テキスト | ダークモードのテキストの色 | dark:text-gray-400 | ダークモード時のテキストの色を灰色の400番に設定 | dark:text-{color}-{shade} の形式で様々な色を指定できる |
レイアウト | 高さ | h-6 | 要素の高さを1.5remに設定 | h-{size} の形式で様々な高さを指定できる |
レイアウト | 幅 | w-6 | 要素の幅を1.5remに設定 | w-{size} の形式で様々な幅を指定できる |
テキスト | テキストの色 | text-red-500 | テキストの色を赤の500番に設定 | text-{color}-{shade} の形式で様々な色を指定できる |
レイアウト | マージン | ml-4 | 左のマージンを1remに設定 | m{t|r|b|l|x|y}-{size} の形式で様々なマージンを指定できる |
グループ | グループ | group | 要素をグループ化する | group-{modifier} の形式で様々な修飾子を指定できる |
レイアウト | 位置 | relative | 要素を相対的な位置に配置 | static, fixed, absolute, sticky なども指定できる |
インタラクション | カーソル | cursor-pointer | マウスカーソルをポインターに変更 | cursor-{type} の形式で様々なカーソルの種類を指定できる |
レイアウト | オブジェクトのフィット | object-cover | 要素内の画像やビデオを親要素に合わせてトリミング | object-{fit} の形式で様々なフィットの方法を指定できる |
レイアウト | 高さ | h-64 | 要素の高さを16remに設定 | h-{size} の形式で様々な高さを指定できる |
フィルター | グレースケール | grayscale | 画像をグレースケールに変換 | grayscale-{amount} の形式で様々な量を指定できる |
グループ | ホバー時のフィルター | group-hover:filter-none | グループ内の要素にホバーした際、フィルターを無効化 | group-hover:{modifier} の形式で様々な修飾子を指定できる |
レイアウト | 位置 | absolute | 要素を絶対的な位置に配置 | static, fixed, relative, sticky なども指定できる |
レイアウト | インセット | inset-0 | 要素の上下左右を0に設定 | inset-{size} の形式で様々なインセットを指定できる |
テキスト | テキストの色 | text-white | テキストの色を白に設定 | text-{color} の形式で様々な色を指定できる |
グループ | ホバー時のスケール | group-hover:scale-[120%] | グループ内の要素にホバーした際、要素を120%に拡大 | group-hover:scale-{amount} の形式で様々な拡大率を指定できる |
トランジション | トランジション | transition | 要素の状態変化にトランジションを適用 | transition-{property} の形式で様々なプロパティを指定できる |
レイアウト | 高さ | h-5 | 要素の高さを1.25remに設定 | h-{size} の形式で様々な高さを指定できる |
レイアウト | 幅 | w-5 | 要素の幅を1.25remに設定 | w-{size} の形式で様々な幅を指定できる |
レイアウト | マージン | mx-3 | 左右のマージンを0.75remに設定 | m{t|r|b|l|x|y}-{size} の形式で様々なマージンを指定できる |
レイアウト | マージン | mt-1 | 上のマージンを0.25remに設定 | m{t|r|b|l|x|y}-{size} の形式で様々なマージンを指定できる |
レイアウト | 高さ | h-1 | 要素の高さを0.25remに設定 | h-{size} の形式で様々な高さを指定できる |
バックグラウンド | 背景色 | bg-gray-200 | 背景色を灰色の200番に設定 | bg-{color}-{shade} の形式で様々な色を指定できる |
ボーダー | 角丸 | rounded | 要素の角を丸くする | rounded-{size} の形式で様々な角丸のサイズを指定できる |
バックグラウンド | ダークモードの背景色 | dark:bg-gray-800 | ダークモード時の背景色を灰色の800番に設定 | dark:bg-{color}-{shade} の形式で様々な色を指定できる |
レイアウト | 位置 | left-0 | 要素を左端に配置 | left-{size} の形式で様々な位置を指定できる |
レイアウト | 位置 | top-0 | 要素を上端に配置 | top-{size} の形式で様々な位置を指定できる |
レイアウト | 高さ | h-full | 要素の高さを100%に設定 | h-{size} の形式で様々な高さを指定できる |
バックグラウンド | 背景色 | bg-yellow-500 | 背景色を黄色の500番に設定 | bg-{color}-{shade} の形式で様々な色を指定できる |
レイアウト | 幅 | w-1/2 | 要素の幅を50%に設定 | w-{fraction} の形式で様々な幅の割合を指定できる |
テキスト | フォントサイズ | text-sm | テキストのフォントサイズを0.875remに設定 | text-{size} の形式で様々なフォントサイズを指定できる |
レイアウト | マージン | mt-3 | 上のマージンを0.75remに設定 | m{t|r|b|l|x|y}-{size} の形式で様々なマージンを指定できる |
nino+で頻出するTailwindCSS
スタイルの種類 | カテゴリー | クラス | 説明 | 追加情報 | 追加情報2 |
---|---|---|---|---|---|
アニメーション | 持続時間 | duration-75 | アニメーションやトランジションの長さを75ミリ秒に設定 | transition-duration: 75ms; を適用 | 他の持続時間クラス: duration-100 , duration-150 , duration-200 , duration-300 , duration-500 , duration-700 , duration-1000
|
アスペクト比 | 比率 | aspect-[2/4] | 要素の縦横比を2:4に設定 | aspect-ratio: 2 / 4; を適用 | 他の比率も同様に指定可能 |
サイズ | 幅 | w-20 | 要素の幅を5rem (通常は80px) に設定 | width: 5rem; を適用 | 他の幅クラス: w-0 , w-1 , w-2 , w-3 , w-4 , w-5 , w-6 , w-8 , w-10 , w-12 , w-16 , w-24 , w-32 , w-40 , w-48 , w-56 , w-64 , w-auto , w-px , w-1/2 , w-1/3 , w-2/3 , w-1/4 , w-2/4 , w-3/4 , w-1/5 , w-2/5 , w-3/5 , w-4/5 , w-1/6 , w-2/6 , w-3/6 , w-4/6 , w-5/6 , w-1/12 , w-2/12 , w-3/12 , w-4/12 , w-5/12 , w-6/12 , w-7/12 , w-8/12 , w-9/12 , w-10/12 , w-11/12 , w-full , w-screen , w-min , w-max , w-fit
|
ポジショニング | インセット | inset-0 | 要素の上下左右を親要素に対して0に設定する | top: 0; right: 0; bottom: 0; left: 0; を適用する | 他にも inset-x-0 , inset-y-0 , top-0 , right-0 , bottom-0 , left-0 などの指定が可能 |
ポジショニング | 位置 | relative | 要素を相対位置に配置する | position: relative; を適用する | 他の位置クラス: static , fixed , absolute , sticky
|
レイアウト | 位置 | relative | 要素を通常の文書フローに従って配置し、 top、right、bottom、leftプロパティで相対的に配置 | position: relative; を適用 | 他の位置クラス: static , absolute , fixed , sticky
|
レイアウト | オーバーレイ | sticky | 要素を指定した位置に固定し、スクロールしてもその位置に留まる | position: sticky; を適用 | 他のオーバーレイクラス: z-0 , z-10 , z-20 , z-30 , z-40 , z-50 , z-auto
|
レイアウト | オーバーレイ | top-8 | 要素の上端を基準線から8単位 (32px) 下に配置 | top: 2rem; を適用 (1単位 = 0.25rem = 4px) | 他の位置クラス: top-0 , top-px , top-0.5 , ..., top-96 など |
スペーシング | パディング | p-6 | 要素の上下左右に6単位 (24px) のパディングを適用 | padding: 1.5rem; を適用 (1単位 = 0.25rem = 4px) | 他のパディングクラス: p-0 , p-px , p-0.5 , ..., p-96 など |
レイアウト | ボックスの装飾 | border | 要素に1px幅のボーダーを適用 | border-width: 1px; を適用 | 他のボーダークラス: border-0 , border-2 , border-4 , border-8 , border-t , border-r , border-b , border-l など |
真ん中に持ってくる系のやつ+ 表のヘッダーを画面に固定するやつ(Ninoさん作)
スタイルの種類 | カテゴリー | クラス | 説明 | 使用ケース | 追加情報 |
---|---|---|---|---|---|
レイアウト | 位置 | left-1/2 -translate-x-1/2 | 絶対配置の要素を水平方向に中央に配置します。position: absolute; が設定された要素に対して、left: 50%; で要素の左端を親要素の中央に配置し、transform: translateX(-50%); で要素自体を左に50%移動させることで、要素全体を中央に配置します。 |
ポップアップ、オーバーレイ、または特定の位置に配置する必要があるその他の要素を中央に配置したい場合に使用します。 | 絶対配置の要素に使用。right-1/2 -translate-x-1/2 でも同様の効果が得られます。 |
フレックスボックスとグリッド | フレックスボックス | justify-center | フレックスコンテナ内のアイテムを水平方向に中央揃えにします。display: flex; が設定された親要素に対して、justify-content: center; を適用することで、子要素を水平方向に中央揃えにします。 |
横並びの要素を中央揃えにしたい場合、例えばナビゲーションメニューやボタングループを中央に配置する場合に使用します。 | 他の水平方向の配置クラス: justify-start , justify-end , justify-between , justify-around , justify-evenly
|
スペーシング | マージン | mx-auto | 要素の横幅を最大にせず、左右のマージンを自動設定して中央に配置します。ブロックレベル要素に対して、margin-left: auto; margin-right: auto; を適用することで、要素の横幅が最大にならないようにしつつ、左右のマージンを自動で調整して要素を中央に配置します。 |
要素の横幅を指定しつつ、ページ内で中央に配置したい場合に使用します。例えば、幅が制限されたコンテナやカードを中央に配置する場合に適しています。 | ブロックレベル要素に使用。my-auto で垂直方向の中央揃えが可能です。 |
タイポグラフィ | テキストの配置 | text-center | インライン要素(テキストなど)を中央揃えにします。text-align: center; を適用することで、要素内のテキストを中央揃えにします。 |
見出し、段落、ボタンのテキストなどを中央揃えにしたい場合に使用します。 | 他のテキスト配置クラス: text-left , text-right , text-justify
|
表っぽくするやつ
スタイルの種類 | カテゴリー | クラス | 説明 | 使用ケース | 追加情報 |
---|---|---|---|---|---|
レイアウト | グリッド | grid |
要素をグリッドレイアウトに変換します。 | ページ全体やセクション全体をグリッドレイアウトにしたい場合。 | 他のグリッドクラスと組み合わせて使用します。 |
レイアウト | 高さ | min-h-screen |
要素の最小高さをビューポートの高さに設定します。 | ページ全体を覆うコンテナを作成したい場合。 | フレックスボックスやグリッドレイアウトと組み合わせて使用することが多いです。 |
レイアウト | 幅 | w-full |
要素の幅を親要素の幅に合わせます。 | 要素を親要素の幅に合わせたい場合。 | 他の幅関連クラスと組み合わせて使用可能。 |
レイアウト | グリッド | grid-cols-[280px_1fr] |
グリッドレイアウトにカスタム列幅を指定します。最初の列は280px、2番目の列は残りの幅を占めます。 | 固定幅のサイドバーとそれに続く可変幅のコンテンツエリアを作成する場合。 | カスタム値を使用して、特定のレイアウトニーズに対応できます。 |
スタイルの種類 | カテゴリー | クラス | 説明 | 使用ケース | 追加情報 |
---|---|---|---|---|---|
レイアウト | 境界 | border-r |
要素の右側にボーダーを追加します。 | サイドバーなどの境界を示す場合。 |
border-l や border-t など他の境界クラスと組み合わせて使用可能。 |
レイアウト | 境界 | border-b |
要素の下側にボーダーを追加します。 | 下側に境界を示す場合。 | 他の境界クラスと組み合わせて使用可能。 |
レイアウト | 背景 | bg-gray-100/40 |
背景色を半透明のグレーに設定します。 | 淡い背景色を使用したい場合。 | ダークモード用の dark:bg-gray-800/40 と組み合わせて使用。 |
レイアウト | 背景 | dark:bg-gray-800/40 |
ダークモード時の背景色を半透明のグレーに設定します。 | ダークモード対応時に使用。 | ライトモード用の背景クラスと組み合わせて使用。 |
レイアウト | 表示 | block |
要素をブロック表示にします。 | ブロックレベルの要素として表示する場合。 | インライン要素やフレックス要素と併用可能。 |
フレックスボックス | フレックス | flex |
要素をフレックスボックスレイアウトに変換します。 | フレックスボックスレイアウトを適用したい場合。 | フレックスディレクションやジャスティファイコンテンツと組み合わせて使用。 |
フレックスボックス | 高さ | h-full |
要素の高さを親要素の高さに合わせます。 | フレックスボックスやグリッドコンテナ内で要素を全高にしたい場合。 | 他の高さ関連クラスと組み合わせて使用可能。 |
フレックスボックス | 高さ | max-h-screen |
要素の最大高さをビューポートの高さに設定します。 | 高さをビューポートに制限したい場合。 | 他の高さ関連クラスと組み合わせて使用可能。 |
フレックスボックス | 高さ | h-[60px] |
要素の高さを60pxに固定します。 | 固定高さの要素を作成したい場合。 | カスタム高さのクラス。 |
フレックスボックス | ギャップ | gap-2 |
要素間のギャップを設定します。 | 要素間にスペースを追加したい場合。 | 他のギャップ関連クラスと組み合わせて使用可能。 |
フレックスボックス | アイテム | items-center |
フレックスアイテムを縦方向に中央揃えにします。 | フレックスコンテナ内でアイテムを中央揃えにしたい場合。 | 他のアライメントクラスと組み合わせて使用可能。 |
フォーム | 入力 | appearance-none |
デフォルトのスタイルを削除します。 | カスタムスタイルを適用したいフォーム要素に使用。 | 入力フィールドやボタンに適用可能。 |
レイアウト | 幅 | w-full |
要素の幅を親要素の幅に合わせます。 | 要素を親要素の幅に合わせたい場合。 | 他の幅関連クラスと組み合わせて使用可能。 |
フォーム | 入力 | pl-8 |
入力フィールドの左パディングを設定します。 | アイコンと一緒に入力フィールドを使用する場合。 | パディング値はカスタマイズ可能。 |
カラー | テキスト | text-gray-500 |
テキストの色をグレーに設定します。 | 主要なテキストの強調に使用。 | 他のテキストカラークラスと組み合わせて使用可能。 |
カラー | テキスト | dark:text-gray-400 |
ダークモード時のテキストの色を薄いグレーに設定します。 | ダークモード対応時に使用。 | ライトモード用のテキストカラークラスと組み合わせて使用。 |
スタイルの種類 | カテゴリー | クラス | 説明 | 使用ケース | 追加情報 |
---|---|---|---|---|---|
フレックスボックス | フレックス | flex |
要素をフレックスボックスレイアウトに変換します。 | フレックスボックスレイアウトを適用したい場合。 | フレックスディレクションやジャスティファイコンテンツと組み合わせて使用。 |
フレックスボックス | 方向 | flex-col |
フレックスアイテムを縦方向に配置します。 | フレックスボックスの方向を設定したい場合。 |
flex-row など他の方向クラスと組み合わせて使用可能。 |
フレックスボックス | フレックス | flex-1 |
フレックスアイテムの成長を1に設定します。 | フレックスコンテナ内でアイテムを均等に成長させたい場合。 | 他の成長関連クラスと組み合わせて使用可能。 |
フレックスボックス | ギャップ | gap-4 |
要素間のギャップを設定します。 | 要素間にスペースを追加したい場合。 | 他のギャップ関連クラスと組み合わせて使用可能。 |
フレックスボックス | ギャップ | md:gap-8 |
中サイズ以上のスクリーンで要素間のギャップを設定します。 | レスポンシブデザインに対応する場合。 | 他のギャップ関連クラスと組み合わせて使用可能。 |
レイアウト | パディング | p-4 |
全方向に4単位のパディングを追加します。 | 要素に均等なパディングを追加したい場合。 | 他のパディングクラスと組み合わせて使用可能。 |
レイアウト | パディング | md:p-6 |
中サイズ以上のスクリーンで全方向に6単位のパディングを追加します。 | レスポンシブデザインに対応する場合。 | 他のパディングクラスと組み合わせて使用可能。 |
フレックスボックス | アイテム | items-center |
フレックスアイテムを縦方向に中央揃えにします。 | フレックスコンテナ内でアイテムを中央揃えにしたい場合。 | 他のアライメントクラスと組み合わせて使用可能。 |
フレックスボックス | 配置 | justify-between |
フレックスアイテムを左右両端に配置します。 | スペースの分配をしたい場合。 | 他の配置関連クラスと組み合わせて使用可能。 |
フォーム | フォント | font-semibold |
テキストの太さを設定します。 | 強調したいテキストに使用。 | 他のフォント関連クラスと組み合わせて使用可能。 |
フォーム | テキスト | text-lg |
テキストのサイズを大きく設定します。 | 大きめのテキストを使用したい場合。 | 他のテキストサイズクラスと組み合わせて使用可能。 |
フォーム | テキスト | md:text-2xl |
中サイズ以上のスクリーンでテキストのサイズを設定します。 | レスポンシブデザインに対応する場合。 | 他のテキストサイズクラスと組み合わせて使用可能。 |
フォーム | パディング | py-1 |
上下に1単位のパディングを追加します。 | 要素に上下のパディングを追加したい場合。 | 他のパディングクラスと組み合わせて使用可能。 |
フォーム | パディング | px-2 |
左右に2単位のパディングを追加します。 | 要素に左右のパディングを追加したい場合。 | 他のパディングクラスと組み合わせて使用可能。 |
フォーム | 入力 | w-full |
要素の幅を親要素の幅に合わせます。 | 要素を親要素の幅に合わせたい場合。 | 他の幅関連クラスと組み合わせて使用可能。 |
フォーム | 入力 | h-full |
要素の高さを親要素の高さに合わせます。 | 要素を親要素の高さに合わせたい場合。 | 他の高さ関連クラスと組み合わせて使用可能。 |
フォーム | 入力 | resize-none |
要素のリサイズを無効にします。 | 入力フィールドのサイズを固定したい場合。 | テキストエリアに使用。 |
フォーム | 境界 | border |
要素に境界を追加します。 | 要素の境界を強調したい場合。 | 他の境界クラスと組み合わせて使用可能。 |
フォーム | シャドウ | shadow-sm |
小さなシャドウを追加します。 | 要素に微妙なシャドウを追加したい場合。 | 他のシャドウクラスと組み合わせて使用可能。 |
フォーム | 角丸 | rounded-lg |
要素の角を大きく丸めます。 | 要素の角を丸めて柔らかい印象を与えたい場合。 | 他の角丸クラスと組み合わせて使用可能。 |
Tailwind CSSの便利なユーティリティクラス一覧
Tailwind CSSは、HTMLの要素に直接スタイルを適用するためのユーティリティクラスを多数提供しています。これらのクラスを使うことで、CSSを書かなくてもほとんどのスタイリングを行うことができます。以下の表は、よく使われるユーティリティクラスの一部をまとめたものです。
スタイルの種類 | カテゴリー | クラス | 説明 | 追加情報 |
---|---|---|---|---|
テキスト | フォントの太さ | font-bold |
テキストを太字にする |
font-normal 、font-medium 、font-semibold 、font-extrabold 、font-black もある |
テキスト | フォントサイズ | text-xl |
テキストを大きくする(1.25rem) |
text-xs 、text-sm 、text-base 、text-lg 、text-2xl 、text-3xl 、text-4xl 、text-5xl 、text-6xl もある |
テキスト | テキストの配置 | text-center |
テキストを中央揃えにする |
text-left 、text-right 、text-justify もある |
背景 | 背景色 | bg-blue-500 |
背景色を青色にする | 他の色も数字を変えることで指定できる(例:bg-red-200 、bg-green-700 など) |
ボーダー | 角丸 | rounded |
要素の角を丸くする |
rounded-none 、rounded-sm 、rounded-md 、rounded-lg 、rounded-full もある |
ボーダー | ボーダー幅 | border-2 |
ボーダーの幅を2pxにする |
border 、border-0 、border-4 、border-8 もある |
レイアウト | パディング | p-4 |
要素の上下左右に16pxのパディングを追加する |
pl-4 (左)、pr-4 (右)、pt-4 (上)、pb-4 (下)のように方向を指定することもできる |
レイアウト | マージン | m-4 |
要素の上下左右に16pxのマージンを追加する | パディングと同様に、ml-4 (左)、mr-4 (右)、mt-4 (上)、mb-4 (下)のように方向を指定することもできる |
フレックスボックス | フレックスの方向 | flex-row |
フレックスアイテムを横方向に並べる |
flex-row-reverse 、flex-col 、flex-col-reverse もある |
フレックスボックス | フレックスアイテムの配置 | justify-center |
フレックスアイテムを中央揃えにする |
justify-start 、justify-end 、justify-between 、justify-around もある |
これらは、Tailwind CSSで提供されている多数のユーティリティクラスのほんの一部です。Tailwind CSSを使うことで、ほとんどのスタイリングをHTMLのクラス名だけで実現することができます。
例えば、ボタンを作る際には以下のようなクラス名を使うことができます。
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
Click Me
</button>
このように、Tailwind CSSのユーティリティクラスを組み合わせることで、簡単に見た目の良いUIコンポーネントを作ることができます。また、クラス名から直感的にスタイルを理解できるため、メンテナンス性も高くなります。
前回のTailwindCSSまとめたもの