Lism Tips

行の高さ(ハーフレディング)

Lism CSS は行の高さを、行の上下に付く余白(ハーフレディング)の量で決めます。そのしくみと、-hl と -lh の使い分けを説明します。

Lism では、行の高さ(line-height)を「行の上下に付ける余白の量」で決めています。この余白の片側ぶんをハーフレディングと呼びます。文字の大きさが変わっても行と行のすきまがそろう、Lism ならではのしくみです。

行の高さとは#

文章の1行は、文字そのものの高さと、その上下の余白でできています。CSS の line-height は、この「文字+上下の余白」を合わせた1行ぶんの高さです。

  • line-height から文字の大きさを引いた残りが、行のすきま(レディング)になります
  • そのすきまは、文字の上と下に半分ずつ付きます。この半分ぶんがハーフレディングです

たとえば文字が 16px で line-height が 26px なら、残りの 10px が上下に 5px ずつ付きます。このときハーフレディングは 5px です。

Lism のしくみ#

Lism は、すべての要素に次の CSS を当てています。

css
* {
  line-height: var(--lh, calc(1em + var(--hl) * 2));
}
  • 1em は、その要素の文字の大きさです
  • --hl は、ハーフレディングの量を入れる CSS 変数です
  • 行の高さ = 文字の大きさ + ハーフレディング × 2 になります

つまり、--hl を決めれば、文字が大きくても小さくても、行の上下に同じ量の余白が付きます。--lh に値が入っているときは、そちらが使われます(下の「-lh も使える」)。

補足

行の高さはこの「すべての要素に当てるルール」で決まっています。そのため、ふつうの CSS で line-height を書いても、その中の要素には受け継がれません。行の高さを変えたいときは -hl か -lh(CSS 変数 --hl・--lh)を使ってください。

なにがうれしいの?#

line-height: 1.6 のように倍率で決めると、文字が大きくなるほど行のすきまも広がります。本文なら気になりませんが、大きな見出しでは行がはなれすぎて、間のびして見えます。

ハーフレディングの量を決めておけば、文字の大きさを変えても、行と行のすきまは同じままです。

表示例

小さな文字でも、行と行のすきまは同じ量です。小さな文字でも、行と行のすきまは同じ量です。

大きな文字でも、すきまは同じ量です。

html
<div class="l--stack -g:20">
  <p class="-fz:s -bgc:base-2">小さな文字でも、行と行のすきまは同じ量です。小さな文字でも、行と行のすきまは同じ量です。</p>
  <p class="-fz:2xl -bgc:base-2">大きな文字でも、すきまは同じ量です。</p>
</div>

行の上下の余白を変える(-hl)#

ハーフレディングは -hl:{トークン} のクラスで変えられます。-hl は half-leading(ハーフレディング)の略です。

表示例

-hl:xs すきまがせまい。すきまがせまい。すきまがせまい。すきまがせまい。

-hl:xl すきまが広い。すきまが広い。すきまが広い。すきまが広い。

html
<div class="l--stack -g:20">
  <p class="-hl:xs -bgc:base-2">-hl:xs すきまがせまい。すきまがせまい。すきまがせまい。すきまがせまい。</p>
  <p class="-hl:xl -bgc:base-2">-hl:xl すきまが広い。すきまが広い。すきまが広い。すきまが広い。</p>
</div>
クラス 入る値 目安
-hl:xs --hl--xs 約 2px
-hl:s --hl--s 約 4px
-hl:base --hl--base 約 6px(最初の値)
-hl:l --hl--l 約 8px
-hl:xl --hl--xl 約 10px

目安は、もとになる --hl-unit(最初は 0.125rem、約 2px)から計算した値です。body には最初から --hl--base が入っていて、中の要素に受け継がれます。

倍率で決める(-lh)も使える#

画面の幅で文字の大きさが大きく変わる見出しのように、文字に合わせて行の高さも伸び縮みしてほしいときもあります。そのために、line-height を倍率で決める lh も用意されています。

指定のしかた 何が起きる?
-lh:xs・-lh:s・-lh:m・-lh:l・-lh:xl --lh に LH のトークン(1.125 から 2)が入る
-lh:1 --lh: 1 になる(行のすきまが無くなる)
1.7 などの好きな数 --lh: 1.7 が入る(React・Astro の lh="1.7"、HTML では class="-lh" style="--lh: 1.7")

表示例

-lh:1 行のすきまがありません。行のすきまがありません。

html
<p class="-lh:1 -fz:xl -bgc:base-2">-lh:1 行のすきまがありません。行のすきまがありません。</p>
注意

ふだんは hl を使ってください。lh を付けた要素の中では、hl を指定しても効きません。

トークン#

変数 何に使う?
--hl--xs から --hl--xl --hl に入れる値(xs・s・base・l・xl)
--lh--xs から --lh--xl --lh に入れる値(xs・s・m・l・xl)

それぞれの値は 文字のトークン の表にあります。

React・Astro で書く場合#

コンポーネントでは hl・lh の Props で渡します。

jsx
<Text hl="l">行の上下の余白を広くする</Text>
<Text lh="1.7">倍率で行の高さを決める</Text>

関連するページ#

公式ドキュメント

2026年10月5日時点の内容(lism-css 1.0.1・@lism-css/ui 0.40.1)をもとに、やさしい日本語でまとめています。

ページの一覧