Tailwind CSSの使用方法とよくある3つの間違った使い方

Tailwind CSSとは

BootstrapのようなCSSフレームワーク。

Bootstrapとは異なり細かいデザインを作成することができるので、最近はBootstrapではなくTailwind CSSを使用するケースが多い。

Tailwind CSSの公式サイトのトップページの作成を見ればどのようなコードでデザインを作成できるかわかる。

https://tailwindcss.com/

Tailwind CSSの使用方法

Tailwind CSSを使いやすくするために、まず作業環境を用意する。

今回はParcelを使用した例で説明する。

まず、適当なフォルダを作成してpackage.jsonを作成する。

mkdir my-tailwind; cd my-tailwind; npm init -y

次にParcel、Tailwind CSSをインストールする。

npm i -D parcel tailwindcss

Parcelインストール後は実行しやすいようにpackage.jsonを以下のように修正。

{
  "name": "my-tailwind",
  "source": "src/index.html",
  "browserslist": "> 1%, last 2 versions, not dead",
  "scripts": {
    "start": "parcel --open",
    "build": "rm -r ./dist/; parcel build"
  },
  "devDependencies": {
    "parcel": "latest",
    "tailwindcss": "latest"
  }
}

次に「npx tailwindcss init」でtailwind.config.jsを生成してcontentにhtmlファイルのパスを入れる。
(v2だとcontentではなくpurgeです)

npx tailwindcss init
// tailwind.config.js
module.exports = {
  content: [
    './src/**/*.html'
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}

.postcssrcも必要なので以下の内容で作成。

{
  plugins: {
    tailwindcss: {},
    autoprefixer: {
      "grid": true
    }
  }
}

tailwind.config.jsを作成したらsrcフォルダを作成してhtmlとcssファイルを作成する。

mkdir src; touch src/index.html; touch src/style.css

htmlとcssの中身は以下の通りにする。

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="style.css">
<title>Hello world!</title>
</head>
<body>
<h1 class="text-red-500">Hello world!</h1>
</body>
</html>
@tailwind base;
@tailwind components;
@tailwind utilities;

HTMLファイル内の「text-red-500」はTailwind CSSのclass。

以上の手順が完了している状態でnpm startを実行すればブラウザにWebページが表示されてHello world!が赤くなっているのが確認できる。

npm run buildを実行すればhtmlとcssファイルが書き出される。

$ npm run build

> build
> rm -r ./dist/; parcel build

✨ Built in 4.96s

dist/index.html             224 B    355ms
dist/index.661305e0.css    3.8 KB    890ms

VS Codeは拡張機能をインストール

VS CodeでTailwind CSSを使用する場合は拡張機能のインストールが推奨されている。

この2つがインストールされていないと効率的にコーディングできないので必ず入れたほうが良い。

PostCSS Language Support - Visual Studio Marketplace

Tailwind CSS IntelliSense - Visual Studio Marketplace

CDNもあるが絶対に使用してはいけない

Tailwind CSSにはCDNもあるがBootstrapのように使用してはいけない。

Tailwind CSSのCDNは約3MBもあるので、これを読み込むとページの読み込みに時間がかかってしまう。

https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css

purgeのパス指定なしで実行してはいけない

Tailwind CSSはpurgeでclassが使用されているパスを指定することで、使用しないCSSは含めないようにすることができる。

逆に言うとこのパス指定が間違っている、あるいは設定されていないとTailwind CSSのすべてを読み込んでしまうのため、ファイルサイズが約3MBになってしまう。

$ npm run build

> build
> rm -r ./dist/; parcel build


console:


console: warn - Tailwind is not purging unused styles because no template
paths have been provided.


console: warn - If you have manually configured PurgeCSS outside of Tailwind
or are deliberately not removing unused styles, set `purge: false` in your
Tailwind config file to silence this warning.


console: warn -
https://tailwindcss.com/docs/controlling-file-size/#removing-unused-css

✨ Built in 15.81s

dist/index.html                  224 B    355ms
dist/index.e988d6b1.css    ⚠️  3.06 MB    9.21s

v2でJust-in-Time Modeを使用していない

Tailwind CSS v2.1からJust-in-Time Modeという新しいモードが導入されている。

tailwind.config.jsでmode: "jit", を追記して有効にすると新しいコンパイラが使用可能となりビルド時間が速くなる。

v3の場合はデフォルトでJust-in-Timeが有効なので設定不要。

// tailwind.config.js
module.exports = {
  mode: "jit",
  purge: [
    './src/**/*.html'
  ],
  darkMode: false, // or 'media' or 'class'
  theme: {
    extend: {},
  },
  variants: {
    extend: {},
  },
  plugins: [],
}

また、class名を組み合わさせて「sm:hover:active:disabled:opacity-75」のように指定したり、背景色などを「bg-[#123456]」のように指定して自由に設定できるようになる。

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="style.css">
<title>Hello world!</title>
</head>
<body class="bg-[#123456]">
<h1 class="text-green-500">Hello world!</h1>
</body>
</html>

Just-in-Time Mode - Tailwind CSS

カテゴリーcss