Tailwindのcalcの書き方・効かない原因と対処法【完全ガイド】
この記事のポイント
Tailwind calcを使用して動的なレイアウトを組む際は計算式を角括弧で囲み、クラス内のスペースによる無効化を防ぐために演算子の前後を省略するかアンダースコアで代用することで、独自のCSSを追加することなく柔軟なサイズ計算を実装できます。
Tailwind CSSでレイアウトを組む際、要素の幅や高さを細かく調整するためにTailwind calcの活用は欠かせません。「正しい書き方がわからない」「計算式がうまく反映されない」といった悩みを抱えている方も多いはずです。独自のCSSを増やさず、保守性の高いコードでレイアウトを完成させるためのテクニックを解説します。
本記事の内容
- 任意の値(Arbitrary values)を用いたcalcの正しい構文
- 演算子の前後にあるスペースやアンダースコアの扱い
- 画面高さを考慮した具体的なレイアウト実装例
Tailwind CSSでcalcを使用する場合、h-[calc(100vh-64px)]のようにブラケットを活用するのが基本です。Tailwind calc widthなどの設定で「Tailwind calc not working(動かない)」状態に陥る原因の多くは、演算子前後のスペース処理にあります。Tailwindcss calcの仕様では、スペースの代わりにアンダースコアを使用するか、適切にエスケープする必要があるのです。
2026年の最新仕様に基づいた記述ルールをマスターすれば、数値の計算が必要な複雑な動的レイアウトも、Tailwind CDNを利用した環境を含めてユーティリティクラスだけで完結できます。コードの可読性も向上させながら、効率的なコーディングを実現しましょう。ぜひ最後までご覧ください。
Tailwindのcalcの基本的な書き方
そもそもTailwind CSSとは何かという基本を踏まえ、動的なサイズ指定を行う際、CSS標準のcalc()関数を活用したい場面多くあります。2026年現在の開発では、HTMLクラスの中で直接計算式を書くArbitrary valuesという機能が主流です。
この機能を使えば、標準クラスでは対応できない細かな調整もクラス名だけで完結します。Tailwindの利便性を損なわずに、ミリ単位のデザイン調整や複雑な画面設計が可能です。
任意の値を指定する方法
Tailwind CSSでcalc()を使う際は、プロパティの後に角括弧[]を記述して計算式を入れます。たとえばTailwindで中央寄せを行う要素の位置調整や、Tailwind calc widthなどの動的な幅指定も、この書き方で簡単に実装可能です。
動的な数値が必要な場面では、この角括弧を用いた任意値指定が最も効率的な手段といえます。自由な計算結果を直接スタイルに適用できるため、わざわざ独自のCSSを書く必要がありません。
| プロパティ | Tailwindでの記述例 | 生成されるCSSのイメージ |
|---|---|---|
| 幅(width) | w-[calc(100%-2rem)] | width: calc(100% - 2rem); |
| 高さ(height) | h-[calc(100vh-80px)] | height: calc(100vh - 80px); |
| 余白(padding) | p-[calc(2rem*1.5)] | padding: calc(3rem); |
| 位置(top) | top-[calc(50%-10px)] | top: calc(50% - 10px); |
角括弧で囲むだけで、Tailwindの命名規則を維持したまま精密なレイアウトが実現できます。Tailwindcss calcを使いこなせば、レスポンシブな設計もよりスマートに行えるでしょう。
演算子の前後のスペースのルール
Tailwind CSS Font Sizeの調整や、Tailwindのクラス内でTailwind calc ()を記述する際、最も注意すべきなのがスペースの扱いです。クラス名の中に半角スペースが含まれると、別のクラスとして認識されるためTailwind calc not workingの原因になります。
標準CSSでは演算子の前後にスペースが必須ですが、Tailwindではスペースを詰めて記述しなければなりません。演算子の前後を詰めて書くと、コンパイラが自動で適切なスペースを補完してCSSを出力します。
- スペースあり(不可) w-[calc(100% - 2rem)] は正しく動作しません。
- スペースなし(基本) w-[calc(100%-2rem)] と記述することで正常に機能します。
アンダースコアで空白を表現する方法
演算子を詰めて書くことに違和感がある場合は、アンダースコアを活用しましょう。たとえばTailwind CSS Buttonの幅計算などで、コンパイラは角括弧内のアンダースコアをスペースとして解釈するため、Tailwind 可読性を高められます。
- w-[calc(100%_-_1rem)] のように、スペースを入れたい箇所にアンダースコアを配置します。
- 出力時は calc(100% - 1rem) としてレンダリングされます。
この手法を使えば、複雑な計算式でもミスを防ぎやすくなります。HTMLクラスとしての正当性を保ちつつ、コードのメンテナンス性を向上させる優れたテクニックです。
変数を使って動的な数値を扱う方法
Tailwind CSSの導入を進める高度な設計では、CSS変数やtheme()関数をcalc()内で活用するのが効果的です。デザインシステムに基づいたTailwind 数値を動的に扱うことで、一貫性のあるレイアウトを構築できます。
- CSS変数の参照 w-[calc(var(--main-width)+2rem)]
- theme()関数の参照 h-[calc(100vh-theme(spacing.12))]
プロジェクト全体で共通化したい数値は、tailwind.config.jsに登録することを推奨します。Tailwind CDNを利用する場合でも、設定ファイルを通じたカスタマイズは保守性を高めるポイントです。
// tailwind.config.js (2026年時点の構成例)
module.exports = {
theme: {
extend: {
height: {
'screen-minus-header': 'calc(100vh - 4rem)',
},
},
},
}
設定に登録すれば、HTML側ではクラス名を呼び出すだけで済みます。独自の計算ロジックをプロジェクト全体で共有でき、スタイルの一元管理が容易になります。
Tailwindのcalcを活用したレイアウトの実装例
Tailwind CSSとBootstrapの違いとして、レイアウト設計の自由度が挙げられますが、Tailwind CSSで動的なサイズ指定を実現する際、calc()関数とArbitrary valuesの組み合わせは特に強力です。標準ユーティリティクラスでは対応できない複雑なレイアウト要件にも柔軟に応えられます。
2026年現在のモダンな開発において、Tailwind CSSは特別な設定なしにHTML内で直接計算式を記述可能です。ただし、クラス名にスペースを含められないため、以下の要点を押さえた記述ルールに従う必要があります。
- 演算子の前後はスペースを省略するか、アンダースコア(_)で代用する
- 計算式全体を角括弧[]で囲み、対象プロパティのプレフィックスと組み合わせる
- theme()関数やCSS変数を活用することで、設計値との整合性を保てる
角括弧を活用すれば、Tailwind calc widthなどの指定も自由自在です。具体的な実装例を解説します。
画面の高さからヘッダー分を引いた高さの計算
メインコンテンツを画面全体からヘッダー高を引いたサイズにする際、Tailwind calc ()の構文が活躍します。h-[calc(100vh-64px)]のようなクラスを指定すれば、デバイスに応じた動的なレイアウトが可能です。
2026年のWeb制作では、モバイルブラウザの仕様を考慮してdvhを組み合わせるのが一般的です。以下の数値を参考にしてください。
- 固定ヘッダー(64px)の場合:h-[calc(100dvh-64px)]
- Tailwindの数値(spacing.16)を使う場合:h-[calc(100dvh-4rem)]
- アンダースコアでTailwind 可読性を高める場合:h-[calc(100dvh_-_4rem)]
Tailwind calc not workingの原因の多くは、演算子の前後のスペース不足です。アンダースコアを使うことで、ビルド時に適切なスペースへ変換されます。
余白を確保した要素幅の計算
親要素の幅から一定の余白を引く場合も、Tailwindcss calcは非常に便利です。%指定のレスポンシブな幅と、px単位の固定余白を混在させたいシーンに最適です。
具体的な実装方法は以下のリストの通りです。
- 左右合計40pxの余白を引く場合:w-[calc(100%-40px)]
- 標準余白(2rem)を差し引く場合:w-[calc(100%-2rem)]
- サイドバーを除いたメイン領域:w-[calc(100%-240px)]
theme()関数をcalc内部で呼び出すことで、デザインシステムとの整合性も保てます。w-[calc(100%-theme(spacing.12))]のように書けば、spacing設定の変更に自動で追従できるでしょう。
追従するサイドバーの配置
スクロール時に固定されるサイドバーの実装においても、calc()は重要な役割を果たします。ヘッダーが存在する場合、単なるtop-0では要素が重なってしまうため、オフセット計算が必要です。
追従型サイドバーを実装するための論理的なクラス構成をまとめました。
- サイドバーの配置:sticky クラスを使用
- 位置の調整:top-[calc(theme(spacing.16)+1rem)]
- 高さの確保:h-[calc(100vh-theme(spacing.16))]
Tailwind CDNを利用している環境でも、これらの任意値の記述はそのまま動作します。運用効率を高めるため、保守性の高い計算式を活用しましょう。
Tailwindのcalcの運用性を高める設定方法
Tailwind CSSで動的なレイアウトを作る際、calc()関数は非常に強力なツールです。2026年現在のモダンな開発環境では、Tailwindcss calcの機能を使い複雑な数値計算も柔軟に記述できます。
Tailwind calc widthなどを指定する場合、クラス名にスペースを含められない制約に注意が必要です。JITエンジンがスペースをクラスの区切りと認識するため、演算子の前後で工夫が求められます。
Tailwind calc not workingと悩む原因の多くは、このスペース扱いのミスにあります。解決策として、以下のルールを徹底してください。
- 演算子前後のスペースを完全に省略する:
h-[calc(100vh-2rem)] - スペースの代わりにアンダースコアを使う:
h-[calc(100vh_-_2rem)]
アンダースコアを用いることで、Tailwind 可読性を維持しながら正しいクラスとして成立します。
設定ファイルでクラスをカスタム定義する方法
プロジェクト全体で頻繁に使う計算式は、tailwind.config.jsにカスタムユーティリティとして定義しましょう。これにより再利用性と保守性が大幅に向上します。
特定のTailwind 数値を共通化すべき理由は、マジックナンバーがコード内に散乱するのを防ぐためです。デザイン変更時も設定ファイルの一箇所を直すだけで一括対応できます。
例えばヘッダー高さを除いた領域を定義する場合、以下のように記述します。HTML側ではh-content-screenと書くだけで意図が明確に伝わるでしょう。
// tailwind.config.js
module.exports = {
theme: {
extend: {
spacing: {
'content-screen': 'calc(100vh - 64px)',
},
},
},
}
既存のテーマ関数を使った計算方法
Tailwind calc ()の中でtheme()関数を使用すると、設定済みの値を計算に組み込めます。デザインシステムの一貫性を保ちながら動的な調整が可能です。
- 直接記述(
w-[calc(100%-20px)]):記述が短く簡潔で、一度限りの調整に向いている - theme()併用(
w-[calc(100%-theme(spacing.12))]):spacing設定の変更に自動追従するため、デザインシステムとの整合性が高い
theme(spacing.12)と指定すれば、config内の48px相当の値を自動取得して計算します。プロジェクト全体でデザイントークンを統一管理している場合に特に有効な手法です。
クラス内で完結させる記述方法
一度しか使用しない計算なら、Arbitrary valuesを用いてクラス内で完結させるのが効率的です。公式のTailwind CDNを利用したプロトタイプ制作でも、この書き方は重宝します。
実務でよく使われるクラス内完結の記述例をリストで紹介します。
- 高さの計算(100vhから調整):
h-[calc(100vh-2rem)] - 幅の計算(パーセントから固定値引き):
w-[calc(100%-1rem)] - CSS変数の活用:
w-[calc(var(--custom-width)+2px)] - 任意プロパティの使用:
[margin-left:calc(50%-10px)]
Tailwind v3以降なら、ブラケット記法で任意のCSSプロパティに対しても直接計算を適用できます。独自のCSSファイルを追加せず、Tailwindのクラス体系だけで完結したコーディングが可能です。
Tailwindのcalcが効かないときのチェック手順
Tailwind CSSでcalc()関数を使用したスタイルが反映されない場合、記述ルールを確認しましょう。2026年現在の開発でも、Tailwind calc widthなどの任意値を扱う際はスペースの扱いが重要です。
以下の手順に従って、実装内容を検証してください。
① 演算子の前後のスペースの有無を見直す
calc()関数内で「+」や「-」を使う際は、演算子の前後に必ずスペースを入れます。CSS標準仕様では、スペースがないと正負の記号や単位の一部として誤認されるためです。
Tailwind CSSのクラス名はスペースを含められません。この矛盾を解決するルールを整理しました。
| 演算子 | スペースの必要性 | 理由 |
|---|---|---|
| + (加算) | 必須 | 加算演算子として正しく認識させるため |
| - (減算) | 必須 | 負の数値やハイフン付きの変数と区別するため |
| * (乗算) | 任意 | CSS標準では必須ではないが可読性のため推奨 |
| / (除算) | 任意 | CSS標準では必須ではないが可読性のため推奨 |
Tailwind calc not workingの原因の多くは、このスペース不足によるものです。加算と減算でスペースを忘れると、ブラウザで無効なプロパティと判定されます。
② アンダースコアが正しく機能しているか確認する
Tailwindcss calcでスペースを表現するには、アンダースコア(_)を使用します。JITエンジンは、任意値の[]内にあるアンダースコアをビルド時に半角スペースへ変換する仕組みです。
具体的な記述例を参考にしてください。
- 正しい例:
h-[calc(100vh_-_50px)] - 誤った例:
h-[calc(100vh - 50px)] - 動作しない例:
h-[calc(100vh-50px)]
アンダースコアを活用すれば、Tailwindの命名規則を守りつつ計算式を成立させられます。Tailwind calc ()の構文エラーを防ぐために徹底しましょう。
③ 動的な値が正しく展開されているか検証する
calc()関数内でCSS変数やtheme()関数を組み合わせる場合、値の解決プロセスを確認します。JavaScriptから動的にTailwind 数値を渡す際や、設定値を参照する際にエラーが起きやすいためです。
- CSS変数の利用:
w-[calc(var(--custom-width)_+_1rem)]と記述 - theme関数の利用:
h-[calc(100vh_-_theme(spacing.12))]と記述 - JITモードの確認:ビルド環境が任意値の使用を許可しているか確認
値が展開されない場合は、最終的なCSSをデベロッパーツールで確認してください。変数が未定義だったり、正規化の過程で計算式が壊れたりしていないかを検証します。
④ 過去のバージョンからの仕様変更を調べる
Tailwind CSSのバージョンによる仕様変更や、既知のバグについて確認してください。特定の条件下でcalc()内の計算が正しく正規化されない報告が過去に存在します。
特に注意すべき点は以下の項目です。
- 任意値の対応:古いバージョンでは[]構文が未対応のケースがある
- 正規化の挙動:コンパイラがスペースを詰めすぎる不具合の有無
- Tailwind CDNの制限:複雑な任意値の解析に限界があるケース
最新の安定版を使用しているか確認しましょう。解決しない場合は公式ドキュメントや GitHubのIssueトラッカーで現行のベストプラクティスを再確認してください。
まとめ:Tailwindのcalcを使えば柔軟なレイアウト計算が簡単に実装できる
Tailwind calcを活用することで、複雑な数値計算が必要なデザインも効率よくコーディング可能です。本記事では正しく計算結果を反映させるための書き方や、Tailwind CSSでよくあるエラーの対処法を詳しく解説しました。
任意の数値を指定する[](Arbitrary values)の中では、演算子の前後にスペースの代わりとしてアンダースコアを使います。2026年のモダンな開発現場では、この特有のルールを理解したスピーディな実装が求められるでしょう。
CDNを利用している場合でも、この記法を使えばCSSファイルを追加せずに動的なレイアウトが作れます。実装がうまくいかないときは、Tailwind calc not workingの状態を防ぐために構文やスペースの有無をまず確認してください。
theme関数の活用などでコードの可読性を高めつつ、標準クラスだけでは難しい調整もcalcを使いこなせば自由自在に表現できます。
本記事のポイント
- Tailwindのcalc記述では、クラス内の演算子の前後にアンダースコア(_)を使用する
- Arbitrary valuesを活用すれば、画面幅や高さに合わせた動的な計算もクラス指定だけで完結可能
- スタイルが当たらない原因の多くは構文エラーのため、デベロッパーツールでの確認が重要
高度なCSS設計やTailwind CSSの導入支援に関するご相談も承っております。プロジェクトの効率化にお悩みの方は、ぜひお気軽にお問い合わせください。
参考文献
執筆者
編集部
BtoB向けのモダンWeb制作に関する情報を発信。Next.jsを活用したWeb制作、SEOに強いサイト設計、UI/UX、AIを活用した制作効率化など、実務に役立つ知見を中心に扱っています。
監修者
Ulty 代表/編集長
海外メディア企業でSEOエディターとして従事後、独立。複数メディア運営の知見をもとに、Next.jsを活用したモダンWeb制作とSEO設計を提供。AIを活用した効率化と高品質な実装を両立し、設計から制作・運用まで一貫して支援している。
関連記事
TailwindのFlexで縦並び・右寄せ・間隔を空ける方法【早見表】
TailwindのFlexで縦並びや右寄せ、間隔指定に悩むエンジニアへ、col、center、space等の実装例を解説し、レイアウト構築の劇的な効率化に貢献します。
TailwindCSSのButtonデザイン・コピペ実装例10選【初心者】
TailwindCSSのButton作成に悩む方へ、コピペで使えるTailwindボタンデザインや実装例を網羅し、共通化で開発を劇的に早めプロ品質のUIを実現します。
Tailwindで中央寄せ・上下左右や効かない原因と対処法【解決】
Tailwindの中央寄せが効かないとお困りの方へ、上下中央や縦並び、Gridとabsoluteの実装手順を網羅し、実務でのレイアウト構築をさらに効率化します。
Tailwindのimportant設定方法と競合解決の代替策4選【初心者】
Tailwindのimportantが反映されない課題に対し、単一や全体設定の記述法から、ディレクティブでapply非推奨を避け、styleを優先する手法を解説します。
TailwindCSSの導入・環境設定とできない時の対処法【図解】
Tailwind CSSの導入手順を環境別に解説し、Windowsでインストールできない原因、CDN設定、公式チートシート活用法を網羅し、開発を効率化します。
TailwindCSSのColor指定と一覧・追加方法・v4対応【完全版】
TailwindCSSのColor指定やカラーコード一覧、primaryや背景色でお悩みの方へ、カスタムカラー追加からv4colorまで解説し保守性の高い設計を実現します。