【CSS】色々な文字修飾の仕方|HTML&CSS入門講座(10)のPodcast
下記のPodcastは、Geminiで作成しました。
ストーリーブック
はじめに
こんにちは!HTML&CSS入門講座の第10回目へようこそ。
今回は、ウェブサイトの印象を左右する非常に重要な要素「文字修飾(テキストスタイリング)」について解説します。
文字のデザインを整えることは、単に見栄えを良くするだけではありません。読み手に「どの情報が大切か」を伝え、ストレスなく文章を読んでもらうための「おもてなし」でもあります。
2025年から2026年にかけて、CSSではこれまで難しかった細かな調整が簡単にできる新しいプロパティが次々と標準化されました。本記事では、基礎から最新のテクニックまで、初心者の方にも分かりやすく丁寧に説明していきます。
文字修飾の基本:フォントとサイズの設計
まずは全ての土台となる、フォントの種類と大きさの設定から始めましょう。
フォントファミリーの指定(font-family)
ウェブサイトで表示される文字の形(書体)を決めるのが font-family です。ユーザーが使っているパソコンやスマホの種類によって、最初から入っているフォントが異なるため、複数の候補を「優先順位が高い順」に指定するのがルールです [1]。
指定の最後には、必ず「総称ファミリー名」を記述します。例えば、ゴシック体なら sans-serif、明朝体なら serif と書きます。これにより、もし指定したフォントが相手の端末になかったとしても、ブラウザが似た系統のフォントを自動で選んでくれます [2]。
賢いサイズ指定(remとpxの使い分け)
文字の大きさ(font-size)を指定する際、初心者の頃は「16px」のように固定値で指定しがちです。しかし、アクセシビリティ(誰にとっても使いやすいこと)を考えると、rem という単位を使うのが現在の標準です [4]。
rem は、ブラウザの基本設定(通常は16px)を「1」とする単位です。ユーザーがブラウザ設定で「文字を大きく表示したい」と設定している場合、rem で指定していれば自動的にその設定に合わせて文字が大きくなります。本文なら 1rem(16px相当)、見出しなら 1.5rem(24px相当)のように指定するのが一般的です [5]。


読みやすさを決める「余白」の魔法
文字そのものの装飾と同じくらい大切なのが、文字の周りの「余白」です。
行間(line-height)は「単位なし」で指定する
行と行の間の広さを決める line-height は、読みやすさに直結します。ここで最も大切なルールは、「単位を付けずに数字だけ書く」ことです [7]。
良い例: line-height: 1.5;
避けたい例: line-height: 1.5em; や line-height: 24px;
単位を付けずに指定すると、その要素のフォントサイズに合わせて行高が自動計算されます。例えば 1.5 と指定すれば、文字サイズが16pxなら24pxの行高に、文字を大きくして32pxになれば48pxの行高に、と常に適切な比率が保たれます [8]。本文の推奨値は 1.5 から 1.8 程度です [9]。


字間(letter-spacing)で印象を整える
文字と文字の間の間隔を調整するのが letter-spacing です。日本語のフォントは、デフォルトでは少し詰まって見えることがあるため、0.05em 程度のわずかな隙間を空けると、ゆとりが出て高級感や清潔感のある印象になります [1]。
進化した下線と強調のテクニック
かつてCSSの下線は「単純な一本線」でしたが、最新のCSSでは非常に細かなカスタマイズが可能になりました。
text-decoration の新しい書き方
text-decoration は、線の種類・色・太さをまとめて指定できる便利なプロパティです [12]。
css
p {
text-decoration: underline wavy #ff6b6b 2px;
}このように書くと、「赤っぽい色の、2ピクセルの太さの、波線の下線」を引くことができます。波線(wavy)は、注意を促したい箇所や、少し遊び心を入れたいデザインに最適です [13]。
日本語を美しく見せる text-underline-offset
日本語に下線を引くと、文字の「はらい」や「点」と線が重なってしまい、読みにくくなることがあります [15]。そんな時に役立つのが text-underline-offset です。このプロパティを使うと、文字と下線の間の「距離」を調整できます。例えば text-underline-offset: 0.2em; と指定すると、文字から少し離れた場所に下線が表示され、日本語の文字の形を邪魔せずに美しく強調できます [16]。
日本語特有の「圏点(傍点)」をつける
文章の重要な一文字ずつに「・」を打つ、日本語ならではの強調表現を「圏点」と呼びます。これを実現するのが text-emphasis プロパティです [18]。text-emphasis: filled circle; と指定するだけで、文字の上に自動的に点が付きます。色は text-emphasis-color で自由に変えることができます [19]。


2026年の新常識:レスポンシブとレイアウトの新機能
デバイスの画面サイズが多様化する現代、文字修飾も「流動的」であることが求められています。
clamp() で作る「勝後に縮む」文字
スマホで見るとちょうどいい大きさなのに、パソコンで見ると小さすぎる……。そんな悩みを解決するのが clamp() 関数です [21]。
css
h1 {
font-size: clamp(1.2rem, 3vw + 1rem, 2.5rem);
}この一行で、「最小1.2rem、最大2.5remの範囲内で、画面幅(vw)に合わせてスムーズにサイズを変えてね」という命令になります。複数のメディアクエリを書く必要がなく、どんな画面サイズでも理想的な文字サイズを維持できる画期的な手法です [22]。
見出しを綺麗に折り返す text-wrap: balance
長い見出しが2行になったとき、1行目はとても長く、2行目はたった1文字だけ……という不格好な改行を見たことはありませんか?最新の text-wrap: balance プロパティを使うと、ブラウザが自動で計算して、各行の長さが均等になるようにバランス良く折り返してくれます [24]。


究極の余白調整:text-box-trim
2025年後半から主要なブラウザ(Chrome 133, Safari 18.2など)でサポートが始まった最新機能が text-box-trim です [27]。通常、文字の上下には「ハーフ・レディング」と呼ばれる目に見えない余白が存在します。これが原因で、デザインツール(Figmaなど)で作成した正確な余白が再現できないことがありました。text-box: trim-both; を指定すると、文字の上下にある余計な空白をぴったり削ぎ落とすことができ、ボタンの中の文字を完璧に中央に配置するといったことが可能になります [28]。
誰にでも読みやすく:アクセシビリティの視点
最後に、非常に重要な「色のコントラスト」についてお話しします。
コントラスト比の基準を守ろう
文字の色と背景の色の組み合わせには、守るべきルールがあります。視覚が弱い方や、太陽光の下でスマホを見ている方でも内容が読めるように、十分なコントラスト(明暗差)を確保しなければなりません [31]。世界的なガイドライン(WCAG)では、通常のテキストで 4.5:1 以上 のコントラスト比を確保することが推奨されています [32]。デザイン重視で薄いグレーの文字を使いたくなることもありますが、読みやすさを第一に考え、「ダークレッド」や「濃いグレー」など、はっきり識別できる色を選びましょう [33]。


影(text-shadow)で視認性を高める
どうしてもコントラストが低い背景の上に文字を置かなければならない場合は、text-shadow(文字の影)を活用しましょう [35]。文字の周りにわずかな影を付けるだけで、背景から文字が浮き上がり、格段に読みやすくなります。
まとめ
CSSによる文字修飾は、単なる「飾り」ではなく、情報を正しく、心地よく伝えるための強力なツールです。
フォントとサイズは、環境に配慮して rem や rem を使う。
行間は line-height に単位を付けずに指定する。
下線や強調は、日本語の美しさを損なわないようオフセットを調整する。
最新の clamp() や text-wrap を使って、スマホでもPCでも美しいレイアウトを実現する。
これらのテクニックを一つずつ試して、あなたのウェブサイトをより魅力的なものにしていってくださいね。
参考資料
1. 【CSS】文字の基本設定と装飾|サルワカ, https://saruwakakun.com/html-css/basic/text-setting
2. font-familyの基本と指定方法|CodeCamp, https://blog.codecamp.jp/css-font-family
3. CSS fonts module, https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Fonts
4. Accessible font size, https://www.tiny.cloud/blog/css-accessibility/
5. Using relative units like rem or em, https://dev.to/satyam_gupta_0d1ff2152dcc/master-css-text-effects-from-shadows-gradients-to-neon-glows-animations-42e4
6. Minimum font size of 16px for body text, https://www.mcneece.com/2025/03/css-clamp-function-using-clamp-for-responsive-design/
7. line-height properties, https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/line-height
8. You should be using unitless values for line-height, https://playfulprogramming.com/posts/you-should-be-using-unitless-values-for-line-height
9. How CSS line-height works and best practices, https://medium.com/@lampewebdevelopment/how-css-line-height-works-and-best-practices-4b0aefa4f4c4
10. Line-height is unitless, https://allthingssmitty.com/2017/01/30/nope-nope-nope-line-height-is-unitless/
11. letter-spacing property, https://developer.mozilla.org/ja/docs/Web/CSS/Reference/Properties/letter-spacing
12. text-decoration, https://developer.mozilla.org/ja/docs/Web/CSS/Reference/Properties/text-decoration
13. text-decoration-style, https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/text-decoration-style
14. text-decoration-color, https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/text-decoration-color
15. 可読性の低下:下線が文字の画と重なる問題, https://watashi.xyz/css-underline/
16. text-underline-offset, https://developer.mozilla.org/ja/docs/Web/CSS/text-underline-offset
17. CSSの下線調整テクニック, https://blog.to-ko-s.com/css-text-decoration/
18. text-emphasis, https://developer.mozilla.org/ja/docs/Web/CSS/Reference/Properties/text-emphasis
19. 圏点をドットや円で表示する, https://www.tohoho-web.com/css/prop/text-emphasis-style.htm
20. 【text-emphasis-style】圏点を表示する, https://webukatu.com/wordpress/blog/25692/
21. clamp() function for responsive font-size, https://developer.mozilla.org/ja/docs/Web/CSS/clamp
22. CSS Fluid Typography: A guide to using clamp, https://dev.to/devyoma/css-fluid-typography-a-guide-to-using-clamp-for-scalable-text-293o
23. Stop scrolling if you have no idea how CSS clamp works, https://tryhoverify.com/blog/stop-scrolling-if-you-have-no-idea-how-css-clamp-works/
24. text-wrap: balance browser support, https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/text-wrap
25. CSS text-wrap: balance vs pretty, https://blog.logrocket.com/css-text-wrap-balance-vs-text-wrap-pretty/
26. Balancing Japanese and Korean typography, https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/text-wrap
27. text-box-trim browser support 2025, https://developer.mozilla.org/ja/docs/Web/CSS/Reference/Properties/text-box-trim
28. CSS text-box-trim, https://developer.chrome.com/blog/css-text-box-trim
29. テキスト上下の余白を調整できるプロパティ, https://ics.media/entry/250319/
30. CSS Text Box Trim examples, https://github.com/jantimon/text-box-trim-examples
31. Color Contrast in Accessibility, https://userway.org/blog/why-is-color-contrast-so-critical/
32. Minimal contrast ratio for text, https://www.accessibility-developer-guide.com/knowledge/colours-and-contrast/text/
33. Color and Type Accessibility Guidelines, https://brand.ucla.edu/fundamentals/accessibility/color-type
34. Understanding Color Contrast, https://www.section508.gov/blog/accessibility-bytes/color-contrast/
35. Glowing Effects in CSS, https://www.lambdatest.com/blog/glowing-effects-in-css/
36. Mastering CSS Text Effects: Shadows and Gradients, https://dev.to/satyam_gupta_0d1ff2152dcc/master-css-text-effects-from-shadows-gradients-to-neon-glows-animations-42e4




コメント