Lism Tips

デザイントークン(余白・角丸・影など)

Lism CSS のデザイントークン(決まった段階の値)とは何かと、角丸・影・余白・不透明さ・コンテンツの幅のトークンの一覧です。

デザイントークンは、余白・色・角の丸み・影などの値を、あらかじめ決めた段階のセットにしたものです。Lism では、よく使う CSS のプロパティごとにトークンが用意されていて、-p:20 や -bdrs:30 のように番号や名前で選んで使います。

トークンとは#

ページを作っていると、「この余白は 15px、あっちは 17px」のように、少しずつ違う値がまざりがちです。値がばらばらだと、見た目がそろわず、あとで直すのも大変です。

トークンは、使ってよい値を先に決めて、名前を付けておくしくみです。

  • 見た目がそろう:同じトークンを使い回すので、余白や角の丸みが自然にそろいます
  • 意図が読める:--s20 や --text-2 のように名前があるので、何のための値かが分かります
  • まとめて直せる:トークンの値を1か所変えるだけで、サイト全体が変わります

Lism のトークンは CSS 変数(-- で始まる、値を入れておく入れ物)として :root に入っています。名前の付け方は 名前のルール にあります。

色と文字のトークン#

色と文字のトークンは、それぞれ別のページにまとめています。

種類 変数 くわしくは
色(意味の色) --base・--base-2・--text・--text-2・--divider・--link・--brand・--accent・--neutral 色のトークン
フォント(FF) --ff--base・--ff--accent・--ff--mono 文字のトークン
文字の太さ(FW) --fw--light・--fw--normal・--fw--bold 文字のトークン
文字の大きさ(FZ) --fz--2xs から --fz--5xl 文字のトークン
行の上下の余白(HL) --hl--xs・--hl--s・--hl--base・--hl--l・--hl--xl 文字のトークン
行の高さ(LH) --lh--xs・--lh--s・--lh--m・--lh--l・--lh--xl 文字のトークン
字と字のあいだ(LTS) --lts--xs・--lts--s・--lts--base・--lts--l・--lts--xl 文字のトークン

パレットの色(--red・--blue・--green など)も 色のトークン にあります。

RADIUS(角の丸み)#

border-radius(角の丸み)のトークンです。-bdrs は border-radius の略です。

トークン 変数 クラス 最初の値
10 --bdrs--10 -bdrs:10 0.25rem(約 4px)
20 --bdrs--20 -bdrs:20 0.375rem(約 6px)
30 --bdrs--30 -bdrs:30 0.625rem(約 10px)
40 --bdrs--40 -bdrs:40 1rem(約 16px)
50 --bdrs--50 -bdrs:50 1.5rem(約 24px)
99 --bdrs--99 -bdrs:99 99rem(丸くなりきる)

約何 px かは、1rem を 16px として計算した目安です。

段と段の差は、+0.125rem、+0.25rem、+0.375rem、+0.5rem のように、差そのものが少しずつ大きくなっていきます。小さいほうは細かく、大きいほうは大きく変わるので、使い分けやすくなっています。

表示例

10
20
30
40
50
99
html
<div class="l--grid -gtc -g:10" style="--gtc: repeat(3, 1fr)">
  <div class="-bdrs:10 -p:15 -bgc:base-2">10</div>
  <div class="-bdrs:20 -p:15 -bgc:base-2">20</div>
  <div class="-bdrs:30 -p:15 -bgc:base-2">30</div>
  <div class="-bdrs:40 -p:15 -bgc:base-2">40</div>
  <div class="-bdrs:50 -p:15 -bgc:base-2">50</div>
  <div class="-bdrs:99 -p:15 -bgc:base-2">99</div>
</div>

SHADOW(影)#

box-shadow(箱の影)のトークンです。-bxsh は box-shadow の略です。

トークン 変数 クラス
10 --bxsh--10 -bxsh:10
20 --bxsh--20 -bxsh:20
30 --bxsh--30 -bxsh:30
40 --bxsh--40 -bxsh:40
50 --bxsh--50 -bxsh:50

表示例

10
20
30
40
50
html
<div class="l--grid -gtc -g:20 -p:10" style="--gtc: repeat(3, 1fr)">
  <div class="-bxsh:10 -p:15 -bgc:base">10</div>
  <div class="-bxsh:20 -p:15 -bgc:base">20</div>
  <div class="-bxsh:30 -p:15 -bgc:base">30</div>
  <div class="-bxsh:40 -p:15 -bgc:base">40</div>
  <div class="-bxsh:50 -p:15 -bgc:base">50</div>
</div>

影の作り#

1つの影は、2枚の影を重ねて作っています。

  • 要素のすぐ近くに付く、うすい影:1段小さい大きさで、色は --shc を半分の濃さにした --shc--near
  • 主になる影:その段の大きさで、色は --shc
変数 値
--bxsh--10 var(--shsz--5) var(--shc--near), var(--shsz--10) var(--shc)
--bxsh--20 var(--shsz--10) var(--shc--near), var(--shsz--20) var(--shc)
--bxsh--30 var(--shsz--20) var(--shc--near), var(--shsz--30) var(--shc)
--bxsh--40 var(--shsz--30) var(--shc--near), var(--shsz--40) var(--shc)
--bxsh--50 var(--shsz--40) var(--shc--near), var(--shsz--50) var(--shc)

影の部品になる変数の、最初の値は次のとおりです。

変数 最初の値
--shc var(--shadow)(hsl(220 2% 4% / 8%))
--shc--near color-mix(in srgb, var(--shc), transparent 50%)
--shsz--5 0px 0px 1px
--shsz--10 0px 1px 3px
--shsz--20 0px 2px 6px
--shsz--30 0px 4px 12px
--shsz--40 0px 8px 24px
--shsz--50 0px 16px 48px

--shadow の値は公式ドキュメントのものです。CSS の実物では rgba(10,10,10,.08) と書かれています(同じ色を別の書き方にしたもの)。

影の大きさ(--shsz--)は、10 から先は1段ごとに、ずれる量(オフセット)とぼかしが2倍になります。ぼかしは、いつもずれる量の3倍です。5 だけはずれが無い小さなぼかしで、--bxsh--10 の近い影に使われます。

SPACE(余白)#

余白のトークンです。padding(内側の余白)・margin(外側の余白)・gap(要素と要素のすきま)の Property Class で使えます。

トークン 変数 約何 px か
5 --s5 4px
10 --s10 8px
15 --s15 12px
20 --s20 16px
25 --s25 20px
30 --s30 24px
35 --s35 32px
40 --s40 40px
45 --s45 52px
50 --s50 64px
60 --s60 104px
70 --s70 168px

表示例

-p:10(約 8px)
-p:20(約 16px)
-p:30(約 24px)
-p:40(約 40px)
html
<div class="l--stack -g:10">
  <div class="-p:10 -bgc:base-2">-p:10(約 8px)</div>
  <div class="-p:20 -bgc:base-2">-p:20(約 16px)</div>
  <div class="-p:30 -bgc:base-2">-p:30(約 24px)</div>
  <div class="-p:40 -bgc:base-2">-p:40(約 40px)</div>
</div>

余白の決まり方#

余白は、もとになる長さ --s-unit(最初は 0.5rem、約 8px)に、決まった数をかけて作ります。

  • --s10 から --s70 の10ごとの段は、1・2・3・5・8・13・21 という並び(フィボナッチ数列:前の2つを足すと次の数になる並び)をかけます。文章を縦に並べたときのリズムを作るための段です
  • 横方向の gap や padding は、縦のリズムにしばられなくてよいので、50 までは5ごとの間の段もあります(--s5・--s15・--s25・--s35・--s45)
css
:root,
.set--s {
  /* 余白のもと ≒ 8px */
  --s-unit: 0.5rem;

  /* 10 ごとの段(フィボナッチ数列) */
  --s10: var(--s-unit);            /* ≒ 8px */
  --s20: calc(var(--s-unit) * 2);  /* ≒ 16px */
  --s30: calc(var(--s-unit) * 3);  /* ≒ 24px */
  --s40: calc(var(--s-unit) * 5);  /* ≒ 40px */
  --s50: calc(var(--s-unit) * 8);  /* ≒ 64px */
  --s60: calc(var(--s-unit) * 13); /* ≒ 104px */
  --s70: calc(var(--s-unit) * 21); /* ≒ 168px */

  /* 50 までの間の段(横方向の gap・padding 用) */
  --s5:  calc(var(--s-unit) * 0.5); /* ≒ 4px */
  --s15: calc(var(--s-unit) * 1.5); /* ≒ 12px */
  --s25: calc(var(--s-unit) * 2.5); /* ≒ 20px */
  --s35: calc(var(--s-unit) * 4);   /* ≒ 32px */
  --s45: calc(var(--s-unit) * 6.5); /* ≒ 52px */
}

.set--s {
  --s-unit: 0.5em;
}

使えるクラスの一覧は 余白(padding・margin・gap) にあります。

文字の大きさに合わせて余白を変える#

set--s を付けた要素では、--s-unit が 0.5em になります。em はその要素の文字の大きさなので、余白が文字の大きさに合わせて計算しなおされます(Set Class(set--*))。

表示例

set--s と -fz:xl(余白も文字に合わせて広がる)
html
<div class="set--s -fz:xl -p:20 -bgc:base-2">set--s と -fz:xl(余白も文字に合わせて広がる)</div>

--fz--base を clamp() などで画面の幅に合わせて伸び縮みさせているサイトで、余白も一緒に伸び縮みさせたいときは、:root で --s-unit を書きかえます。

css
:root {
  --s-unit: calc(var(--fz--base) * 0.5);
}

OPACITY(不透明さ)#

opacity(不透明さ。小さいほど透ける)のトークンです。-o は opacity の略です。

トークン 変数 クラス 最初の値
mp --o--mp -o:mp 0.9
p --o--p -o:p 0.8
pp --o--pp -o:pp 0.6
ppp --o--ppp -o:ppp 0.4

名前は音楽の強弱記号からきています。mezzo-piano(mp、少し弱く)・piano(p、弱く)・pianissimo(pp、とても弱く)・pianississimo(ppp、もっと弱く)のように、p が多いほど薄くなります。

表示例

mp
p
pp
ppp
html
<div class="l--grid -gtc -g:10" style="--gtc: repeat(4, 1fr)">
  <div class="l--stack -g:5"><div class="-bgc:brand -o:mp -p:30 -bdrs:10"></div><span class="-fz:s">mp</span></div>
  <div class="l--stack -g:5"><div class="-bgc:brand -o:p -p:30 -bdrs:10"></div><span class="-fz:s">p</span></div>
  <div class="l--stack -g:5"><div class="-bgc:brand -o:pp -p:30 -bdrs:10"></div><span class="-fz:s">pp</span></div>
  <div class="l--stack -g:5"><div class="-bgc:brand -o:ppp -p:30 -bdrs:10"></div><span class="-fz:s">ppp</span></div>
</div>

React・Astro では o の Props で渡します。

jsx
<Text o="mp">mp: Lorem ipsum ...</Text>
<Text o="ppp">ppp: Lorem ipsum ...</Text>

SIZE(コンテンツの幅)#

コンテンツの幅に使うトークンです。最大幅を決める -max-sz(最大幅(-max-sz))や、is--wrapper などで使います。

トークン 変数 最初の値
xs --sz--xs 400px
s --sz--s 640px
m --sz--m 880px
l --sz--l 1200px
xl --sz--xl 1600px

最初の値は、lism-css 1.0.1 の main.css に書かれている値です。

関連するページ#

公式ドキュメント

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

ページの一覧