Button(ボタン)
Button は、リンクをボタンの見た目にする部品です。塗りと枠線の2つの形、色・角・大きさの変え方、アイコンを端に寄せる方法をまとめています。
Button(ボタン)は、リンク(<a>)をボタンの見た目にする部品です。@lism-css/ui に入っています。
どんなときに使う?#
- 「申し込む」「詳しく見る」のような、押してほしいリンクを目立たせるとき
- 塗りつぶしと枠線だけの2種類で、大事さの差を見せたいとき
使い方#
<a> に b--button を付けます。枠線だけの形は b--button--outline を足します。-hov:-o は、マウスを乗せると少し透ける(opacity が下がる)クラスです。
表示例
<div class="l--cluster -g:15">
<a class="b--button -hov:-o" href="#">申し込む</a>
<a class="b--button b--button--outline -hov:-o" href="#">詳しく見る</a>
</div>
| クラス | 形 |
|---|---|
b--button |
塗りつぶし(背景が文字の色、文字が背景の色) |
b--button--outline |
枠線だけ(背景は透明、枠は文字の色) |
b--button--fill |
塗りつぶし。専用の見た目は無く、b--button だけのときと同じ |
色・角・大きさを変える#
背景は -bgc、文字の色は -c、角の丸さは -bdrs、大きさは -fz で変えます。この表示例の青いボタン2つは、色の上でも文字が読めるように -fz:l -fw:700 で大きく太くしています。内側の余白は em(文字の大きさを1とする単位)なので、-fz を大きくするとボタン全体が大きくなります。
表示例
<div class="l--cluster -g:15 -ai:center">
<a class="b--button -hov:-o -bgc:brand -bdrs:10 -fz:l -fw:700" href="#">角を少し丸く</a>
<a class="b--button b--button--outline -hov:-o -c:brand -bdrs:10 -fz:l -fw:700" href="#">枠線</a>
<a class="b--button -hov:-o -fz:l -bdrs:99 -px:25" href="#">大きく丸く</a>
</div>
アイコンを入れる#
ボタンの中に <svg class="a--icon"> と文字を並べます。中の要素のすきまは -g で変えます(ふつうは 0.4em)。ボタンの中のアイコンは、scale: 1.05 で少しだけ大きく描かれます。
<a class="b--button -hov:-o -g:5 -bdrs:10" href="#">
<svg class="a--icon" aria-hidden="true">...</svg>
<span>Button</span>
</a>
アイコンだけのボタンは、-w:fit(中身に合わせた幅)と同じ上下左右の余白で、四角にします。
<a class="b--button -hov:-o -w:fit -px:10 -py:10 -hl:0 -bdrs:10" href="#">
<svg class="a--icon -fz:l" aria-hidden="true">...</svg>
</a>
アイコンを端に寄せる#
l--grid を足すと、ボタンが3つの列(左のアイコン・真ん中の文字・右のアイコン)になります。文字はいつも真ん中の列に入るので、アイコンがボタンの端に寄ります。
表示例
<div class="l--stack -g:15">
<a class="b--button l--grid -hov:-bgc -bdrs:10" href="#">
<span>文字だけ</span>
<span class="a--icon" aria-hidden="true">→</span>
</a>
</div>
b--button には、Grid のときのために次の CSS が入っています。
.b--button {
place-content: center;
place-items: center;
grid-template-columns: minmax(1em, auto) 1fr minmax(1em, auto);
}
:where(.b--button.l--grid) > :not(.a--icon) {
grid-column: 2;
}
専用の変数#
| 変数 | 意味 | 初期値 |
|---|---|---|
--c |
文字の色 | var(--base)(outline は var(--text)) |
--bgc |
背景の色 | var(--text)(outline は transparent) |
--bdc |
枠線の色 | transparent(outline は var(--c)) |
--bdw |
枠線の太さ | 1px |
--hl |
行の高さの調整(ハーフレディング) | var(--hl--s) |
ほかに、すきま 0.4em・内側の余白 0.5em 0.875em が付き、下線は消えます。形のちがうボタンを並べても大きさがずれないように、塗りの形にも透明な枠線が付いています。
マウスを乗せると塗りと枠線を入れかえる(CSS を自分で足す)#
公式ドキュメントには、マウスを乗せると塗りと枠線が入れかわる -hov:reverse の例があります。これは @lism-css/ui には入っていないので、次の CSS を自分で足して使います。
.-hov\:reverse {
--hov-c: var(--bgc);
--hov-bgc: var(--c);
&:where(.b--button--fill) {
--bdc: var(--bgc);
--hov-bgc: transparent;
}
&:where(.b--button--outline) {
--hov-c: var(--base);
}
@media (any-hover: hover) {
&:hover {
background-color: var(--hov-bgc) !important;
color: var(--hov-c) !important;
}
}
}
<a class="b--button b--button--fill -hov:reverse" href="#">Button</a>
<a class="b--button b--button--outline -hov:reverse" href="#">Button</a>
b--button--fill は、こうして塗りの形だけに CSS を当てたいときの目印になります。
React・Astro で書く場合#
import { Button } from '@lism-css/ui/react/Button';
<Button href="#" variant="fill">申し込む</Button>
<Button href="#" variant="outline" c="brand" bdrs="10">詳しく見る</Button>
<Button href="#" layout="grid" max-w="20em" bdrs="10" hov="-bgc">
<span>Button</span>
<Icon icon={ArrowRightIcon} />
</Button>
Astro では @lism-css/ui/astro/Button から読み込みます。公式の出力例では、コンポーネントから出た HTML に -hov:-o が付いています。layout="grid" で l--grid の形になります。
| Props | 何をするか |
|---|---|
variant |
b--button--{variant} のクラスを付ける。用意されている見た目は、指定なし(塗り)と outline の2つ。fill を指定すると b--button--fill が付くが、見た目は指定なしと同じ |
@lism-css/ui を使わずに作る#
本体のクラスだけでも作れます。
表示例
<div class="l--cluster -g:15">
<a href="#" class="-d:inline-flex -td:none -c:base -bgc:text -hl:s -py:10 -px:20 -bdrs:20 -hov:-o">Button</a>
<a href="#" class="-d:inline-flex -td:none -c:inherit -bd -hl:s -py:10 -px:20 -bdrs:20 -hov:-o">Button</a>
</div>
関連するページ#
- Badge(バッジ):押さない小さなラベル
- マウスを乗せたとき(-hov):
-hov:-oなどのしくみ - UI コンポーネントの使い方:読み込み方
公式ドキュメント
2026年10月5日時点の内容(lism-css 1.0.1・@lism-css/ui 0.40.1)をもとに、やさしい日本語でまとめています。