| この記事の要点 |
|
letter-spacing の基本
letter-spacing は文字と文字の間隔(トラッキング)を調整する CSS プロパティです。タイポグラフィの仕上がりを左右する重要な値で、見出し・キャプション・ロゴなどに効きます。
/* 既定値 */
.a { letter-spacing: normal; } /* フォント側の定義に従う */
/* 絶対値(推奨しない・固定 px は拡縮に弱い) */
.b { letter-spacing: 2px; }
/* 相対値(推奨・フォントサイズに追従) */
.c { letter-spacing: 0.05em; } /* +5% */
.d { letter-spacing: -0.02em; } /* -2%(詰め) */
/* 単位ゼロは 0 のみで OK */
.e { letter-spacing: 0; }
/* CSS Custom Property + clamp() で可変 */
.f {
letter-spacing: clamp(0.02em, 0.05vw, 0.1em);
}
値の単位と挙動
| 単位 | 意味 | 例 |
|---|---|---|
normal | フォント側のデフォルト(通常は 0) | letter-spacing: normal; |
px | 絶対値。拡大率変更に弱い | letter-spacing: 2px; |
em | 現在のフォントサイズ基準(推奨) | letter-spacing: 0.05em; |
rem | ルート要素のフォントサイズ基準 | letter-spacing: 0.1rem; |
ch | 「0」の文字幅基準(等幅 font 向け) | letter-spacing: 0.5ch; |
| 負の値 | 文字を詰める | letter-spacing: -0.02em; |
用途別のおすすめ値
| 用途 | 推奨値 | 狙い |
|---|---|---|
| 本文 | 0 〜 0.02em | 長文で疲れない範囲 |
| 見出し h1/h2 | -0.02em 〜 -0.04em | 大きい文字は詰めて引き締める |
| キャプション / 小さい文字 | 0.03em 〜 0.05em | 小サイズの可読性向上 |
| 全角オーバーライン見出し | 0.1em 〜 0.2em | 「メ ニ ュ ー」のような演出 |
| ロゴ・ボタン | 0.05em 〜 0.15em | 視認性 + 上品さ |
| 等幅コード | 0 | 等幅性を維持 |
日本語との相性: palt と組み合わせる
日本語フォントは標準だと文字ごとに同じ全角ボックスを使うので、「Tの右」と「.」の間がやけに空いて見えます。これを直すのが font-feature-settings: "palt"(プロポーショナル alternate)です:
/* 日本語見出しの定番セット */
h1, h2, h3 {
font-feature-settings: "palt"; /* プロポーショナル詰め */
letter-spacing: 0.02em; /* palt で詰めすぎた分を少し戻す */
}
/* font-feature-settings の代わりに font-kerning も使える */
.heading {
font-kerning: normal;
letter-spacing: -0.02em;
}
palt 対応フォントとそうでないフォントがあります(游ゴシック・ヒラギノは対応、Web Font の Noto Sans JP は一部)。
letter-spacing が効かない / 期待通りにならない理由
- 等幅フォント (monospace) は 1 文字 1 セルなので、letter-spacing をかけると等幅性が崩れる
- Web Font の読込前は別フォントで描画されており、letter-spacing が変わって見える
- justify (text-align: justify) と組合せると、両端揃え用の追加スペースで意図しない見た目に
- 合字(リガチャ)を持つフォントで letter-spacing をかけると合字が解除される
- 2 行目以降のインデントに影響:
letter-spacingは最後の文字の後ろにも余白が付くので、見出しを中央揃えにしたとき微妙にずれる →padding-leftで補正
word-spacing との違い
| プロパティ | 対象 | 主な用途 |
|---|---|---|
letter-spacing | 文字と文字の間 | 全体のトラッキング |
word-spacing | 単語間のスペース幅(半角スペース部分) | 英文のスペースを広げる |
text-indent | 段落の最初のインデント | 本文の段落字下げ |
Tailwind CSS の tracking ユーティリティ
<!-- Tailwind のプリセット値 -->
<p class="tracking-tighter">-0.05em</p>
<p class="tracking-tight">-0.025em</p>
<p class="tracking-normal">0</p>
<p class="tracking-wide">0.025em</p>
<p class="tracking-wider">0.05em</p>
<p class="tracking-widest">0.1em</p>
<!-- 任意値(JIT モード) -->
<p class="tracking-[0.03em]">カスタム値</p>
アニメーション
/* ホバーで文字が広がる演出 */
.btn {
letter-spacing: 0.05em;
transition: letter-spacing 0.3s ease;
}
.btn:hover {
letter-spacing: 0.2em;
}
/* タイプライター風(@keyframes) */
@keyframes spread {
from { letter-spacing: -0.5em; opacity: 0; }
to { letter-spacing: 0.05em; opacity: 1; }
}
.logo {
animation: spread 1s ease-out;
}
FAQ
Q: letter-spacing: 0.05em と letter-spacing: 5% は同じ?
A: % 単位は仕様上は無効。em 系を使ってください。
Q: 「メ ニ ュ ー」のように全角スペースを入れずに均等な見出しを作りたい
A: letter-spacing: 0.5em 程度 + text-indent: 0.5em で「最後の余白をキャンセル」のテクニックを使います。中央揃えのとき左右の重心がずれにくくなります。
Q: Adobe Illustrator の「カーニング」とは違う?
A: letter-spacing はトラッキング(全体一律)。文字ペアごとに調整するのがカーニングで、CSS では font-kerning: normal でフォント側のテーブルを有効化します。
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38