Set Class(set--*)
Set Class(set--*)は、要素の見た目をリセットしたり、CSS 変数をまとめてセットしたりするクラスです。7つのクラスを表示例つきで紹介します。
Set Class(セットクラス)は、set-- で始まるクラスです。HTML の要素の見た目を整えるものと、ほかのクラスが使う CSS 変数を用意するものがあります。
一覧#
| クラス | 分類 | 何をするか |
|---|---|---|
set--plain |
見た目を整える | ボタンなどの見た目を消して、まっさらにする |
set--revert |
見た目を整える | リストの「・」や番号を、ブラウザの標準に戻す |
set--bxsh |
変数をセットする | 影の変数を作り直し、影の色を変えられるようにする |
set--s |
変数をセットする | 余白のトークンを、文字の大きさに合わせて計算し直す |
set--hov |
変数をセットする | マウスが乗っているかを、子の要素に伝える |
set--bleed |
変数をセットする | 片側だけ画面の端まで広げるための --bleed 変数を作る |
set--bdrsInner |
変数をセットする | 内側の箱にちょうど合う角丸の大きさを計算する |
set-- のあとの名前は、そのクラスが用意する変数の名前から付いています(--bxsh--* なら bxsh、--s* なら s)。
Set Class は、CSS のレイヤー(強さの順番)のうち lism-base に入っています(CSS のレイヤーと強さの順番)。
set--plain(見た目をまっさらにする)#
ボタン(button)には、ブラウザが付ける灰色の背景や枠線があります。set--plain は、そうした見た目(幅・高さ・色・文字・背景・余白・枠線・下線・角丸など)をまとめて消します。
表示例
<div class="l--cluster -g:20">
<button>ふつうのボタン</button>
<button class="set--plain">set--plain のボタン</button>
</div>
自分で作ったボタンやリンクの形を、まっさらな状態から組み立てたいときに使います。
set--revert(リストの印を戻す)#
Lism では、class 属性を持つ ul・ol は、「・」や番号の印が消えます。Property Class だけを付けたリストで印を残したいときに、set--revert を付けます。
表示例
- 1つめ
- 2つめ
- 3つめ
<ul class="-fz:l set--revert">
<li>1つめ</li>
<li>2つめ</li>
<li>3つめ</li>
</ul>
set--revertだけでは何もしません。いまはulとolに付けたときだけ働きます- 左の余白は
--list-ps変数で変えられます(最初は1.75em)
class 属性をまったく持たない ul・ol は、最初から印が付いています。set--revert は要りません。
set--bxsh(影の色を変える)#
影のトークン(--bxsh--10〜--bxsh--50)は、影の色 --shc を使って作られています。set--bxsh を付けた要素では、この影の変数が作り直されます。そのため、同じ要素で --shc を変えると、中の影の色が変わります。
表示例
<div class="l--cluster set--bxsh -g:30" style="--shc: hsl(200 50% 50% / 20%)">
<div class="l--box -bxsh:20 -p:30 -bdrs:20">影 20</div>
<div class="l--box -bxsh:40 -p:30 -bdrs:20">影 40</div>
</div>
影は、要素に近いうすい影と、本体の影の2枚でできています。近い影の色(--shc--near)も --shc から計算し直されるので、2枚の色がそろって変わります。
set--s(余白を文字の大きさに合わせる)#
余白のトークン(--s5〜--s70)は、ふつうは --s-unit: 0.5rem(約 8px)をもとに計算します。set--s を付けると、もとの単位が 0.5em になり、その要素の文字の大きさに合わせて余白が伸び縮みします。
表示例
<div class="l--cluster -g:10 -ai:center">
<button class="set--s -fz:s -py:10 -px:20 -bd">小さいボタン</button>
<button class="set--s -fz:xl -py:10 -px:20 -bd">大きいボタン</button>
</div>
どちらも -py:10 -px:20 ですが、文字が大きいボタンほど余白も大きくなります。ボタンやバッジのように、文字の大きさと余白をいっしょに変えたい部品で使います。
--s-unit を自分で決めることもできます。
<button class="set--s -p:10" style="--s-unit: .4375em">…</button>
set--hov(マウスが乗ったことを子に伝える)#
set--hov は、マウスが乗っているか(hover)を表す2つの変数をセットします。
| 変数 | 空の値になるとき |
|---|---|
--_isHov |
マウスが乗っていないとき(中にフォーカスも無いとき) |
--_notHov |
マウスが乗っているとき、またはフォーカスがあるとき |
CSS の var(--変数, 代わりの値) は、変数が無いときだけ「代わりの値」を使います。このしくみを使うと、次のように書けます。
var(--_isHov, 乗ったときの値):マウスが乗ったときだけ効くvar(--_notHov, 乗っていないときの値):マウスが乗っていないときだけ効く
マウスを使わない端末(タッチ画面など。any-hover: none)では、いつも「乗っていない」扱いになります。
親に set--hov を付けると、親にマウスが乗ったときに、子の見た目を変えられます。たとえば、Lism に用意されている -hov:in:zoom を子の画像に付けると、カードにマウスを乗せたときに画像が少し大きくなります。
表示例
<a href="#" class="l--frame set--hov is--boxLink -ar:16/9 -ov:hidden">
<img class="has--transition -hov:in:zoom" src="/img/sample-landscape.svg" width="960" height="540" alt="">
<div class="l--center is--layer -c:base">
<span class="-fz:xl -bgc:text -p:10">マウスを乗せる</span>
</div>
</a>
自分で -hov:test のようなクラスを作るときは、CSS を自分で足します。
.-hov\:test {
color: var(--_isHov, green) var(--_notHov, red); /* 乗ると緑、ふだんは赤 */
box-shadow: var(--_isHov, var(--bxsh--30)); /* 乗ったときだけ影 */
opacity: var(--_notHov, var(--o--pp)); /* 乗っていないときだけうすく */
}
var(--_isHov, …) var(--_notHov, …) と並べて1行で書く方法は、box-shadow のように空白で区切って値を書くプロパティでは使えません。
マウスを乗せたときのクラスの全体は マウスを乗せたとき(-hov) にあります。
set--bleed(片側だけ端まで広げる)#
set--bleed は、中身の幅(--contentSize)の外にある余白の量を --bleed 変数にセットします。この値を片側の padding に使うと、「文章は中身の幅にそろえたまま、画像だけ画面の端まで広げる」レイアウトが作れます。
表示例
上の文章は、中身の幅にそろっています。
文章の左は、上の文章とそろいます。
<div class="is--container">
<div class="is--wrapper has--gutter -py:20 -bgc:base-2" style="--contentSize: var(--sz--xs)">
<p>上の文章は、中身の幅にそろっています。</p>
</div>
<div class="l--columns set--bleed -cols_sm -g:0 -ai:center" style="--contentSize: var(--sz--xs); --cols: 1; --cols_sm: 2">
<div class="l--box has--gutter -ps -py:20" style="--ps: var(--bleed)">
<p>文章の左は、上の文章とそろいます。</p>
</div>
<div class="l--frame -ar:3/2">
<img src="/img/sample-landscape.svg" width="960" height="540" alt="">
</div>
</div>
</div>
広い表示例では、右の画像が枠の右端まで広がります。
--bleedが、ガター(左右の余白。--gutter)より小さくなることはありません。せまい画面ではガターの幅になります--contentSizeが無いときは、--sz--mを中身の幅とみなします
.set--bleed {
--bleed: max(var(--gutter, var(--gutter--base)), calc((100cqi - min(100cqi, var(--contentSize, var(--sz--m)))) / 2));
}
set--bdrsInner(内側の角丸を合わせる)#
角の丸い箱の中に、余白をはさんで角の丸い箱を入れると、同じ丸さでは外側とずれて見えます。set--bdrsInner は、外側の角丸(--bdrs)から余白(--p)を引いて、内側にちょうど合う角丸(--bdrs--inner)を計算します。
表示例
<div class="set--bdrsInner -p:15 -bdrs:40 -bd -bxsh:20">
<div class="l--frame -bdrs:inner -ar:16/9">
<img src="/img/sample-landscape.svg" width="960" height="540" alt="">
</div>
</div>
- 親に
set--bdrsInnerと-bdrs・-pを付け、子に-bdrs:innerを付けます - 親の
bdrsとpは必ず指定します pとbdrsは値がいつも変数で読める作りなので、画面の幅で親の値を変えても、内側の角丸が自動で合います
.set--bdrsInner {
--bdrs--inner: calc(var(--bdrs, 0px) - var(--p, 0px) + 1px);
}
React・Astro で書く場合#
コンポーネントでは set の Props に、set-- のあとの名前を渡します。
<Lism set="bdrsInner" p="15" bdrs="40" bd bxsh="20">
<Frame bdrs="inner" ar="16/9">…</Frame>
</Lism>
関連するページ#
公式ドキュメント
2026年10月5日時点の内容(lism-css 1.0.1・@lism-css/ui 0.40.1)をもとに、やさしい日本語でまとめています。