Set Class
lism-base 層の中で定義される、HTML 要素の基礎スタイリングや変数セットを行うためのユーティリティクラスを set--{className} の形式で定義しています。
set— クラスは目的別に 2 カテゴリに分かれます。
| カテゴリ | 用途 | クラス |
|---|---|---|
| 基礎スタイリング | HTML 要素のリセット/リバート | set--plain / set--revert |
| 変数のセット | CSS 変数のセットアップのみを行う | set--bxsh / set--hov / set--bdrsInner / set--bleed / set--s |
set--{name} の {name} は、そのクラスがセットアップする CSS 変数の名称に対応します(例: --bxsh--* → bxsh、--_isHov / --_notHov → hov、--bdrs--inner → bdrsInner、--s* → s)。
set--plain
主要スタイルをリセットするためのクラスです。
// ボタンやリンク、モーダルスタイルをリセットするためのユーティリティクラス
// Memo: font:inherit は書いていない。→ .-font:inherit がある + フォーム系には reset.css で記述済み + line-height に影響が出るため。
.set--plain {
width: auto;
height: auto;
min-width: 0;
min-height: 0;
max-width: none;
max-height: none;
color: inherit;
font: inherit;
line-height: calc(1em + var(--hl) * 2); /* 全称セレクタ と同じ値 */
background: none;
padding: 0;
margin: 0;
border: none;
text-decoration: none;
border-radius: 0;
} set--plainをbuttonに適用する例<div class="l--flex -g:20 -ff:mono"> <button class="set--plain">button</button></div>set--revert
ブラウザデフォルトの見た目を明示的に復活させるためのクラスです。 これ単体ではスタイルは持ちません(全プロパティを revert するというようなものではない)。
特定の HTML 要素と組み合わせてスタイルを定義して使うものであり、現状は ul / ol のみ対象です。
Lism CSS では、クラスを持つリスト(ul / ol)ではスタイルがリセットされます。
クラスを持ちつつ、箇条書き表示を維持したい場合(Property Class しか持たないリストなど)に set--revert を付与します。
// HTML 要素の基礎スタイリング ― ブラウザ標準の見た目を復活させる汎用クラス
// set--revert 単体では何も適用されず、HTML要素と組み合わせて使う想定。現状は ul / ol のみ対象だが、ユーザーが a / button など他要素に対しても自由に使える。
:is(ul, ol).set--revert {
list-style: revert;
padding-inline-start: var(--list-ps, 1.75em);
} ul に set--revert を適用する例- item 1
- item 2
- item 3
<ul class="-fz:l set--revert"> <li>item 1</li> <li>item 2</li> <li>item 3</li></ul>classless な ul / ol(class 属性を一切持たないリスト)はブラウザ標準スタイルが自動復活するため、set--revert は不要です。
set--bxsh
set--bxsh クラスを指定した要素では、シャドウを構成する --bxsh-- 変数が再定義されます。
/* --------------------------------------------------
shadow
Memo: :root だけで --bxsh-- をセットしてしまうと --shc がその時点で固定されるので、
要素ごとに --shc を上書きできるよう、再セット用の set--bxsh クラスを併用する。
-------------------------------------------------- */
:root {
--shc: var(--shadow);
--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;
}
:root,
.set--bxsh {
--bxsh--10: var(--shsz--10) var(--shc);
--bxsh--20: var(--shsz--20) var(--shc);
--bxsh--30: var(--shsz--30) var(--shc);
--bxsh--40: var(--shsz--40) var(--shc);
--bxsh--50: var(--shsz--50) var(--shc);
} ここで--shc変数を上書きすることで、シャドウの色味を調整したりすることが可能です。
Default:
set—bxsh で 変数を上書きした例:
<div class="l--flex set--bxsh -g:30" style="--shc: hsl(200 50% 50% / 20%)"> <div class="l--box -bxsh:20 -p:30 -bdrs:20">Box</div> <div class="l--box -bxsh:40 -p:30 -bdrs:20">Box</div></div>set--s
余白トークン(--s5〜--s80)を現在のフォントサイズ基準で再計算するためのクラスです。ButtonやBadgeなど、内部余白を要素自身のfont-sizeに追従させたい時に利用します。
/* --------------------------------------------------
SPACEトークンの定義
Memo: set--s で、SPACEトークンを再定義できる。
-------------------------------------------------- */
:root,
.set--s {
/**
* 余白: フィボナッチ数列をベースに設計する
*/
--s-unit: calc(var(--fz--base) * 0.5); // 計算単位 ≒ 8px
--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
--s80: calc(var(--s-unit) * 34); // ≒ 272px
// ~40までの前半部分は間を埋める
--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
}
.set--s {
// 何も指定しなければ em 単位に変換する
--s-unit: 0.5em;
} <button class="set--s -fz:s -py:10 -px:20">...</button>詳しくは余白トークンを参照してください。
Lism CSS のフィボナッチ数列に基づく余白トークンと、対応するpropertyクラスについて解説します。
set--hov
ホバー状態の判定変数(--_notHov, --_isHov)を次のようにセットします。主に子要素のホバースタイルを制御する時に活用します。
--_isHovは非hover時(かつ非focus-within時)にのみ空白定義されます。--_notHovは逆に、hover時またはfocus-within時に空白定義されます。
@media (any-hover: hover) {
.set--hov:hover {
--_notHov: ;
}
.set--hov:not(:is(:hover, :focus-within)) {
--_isHov: ;
}
}
@media (any-hover: none) {
.set--hov {
--_isHov: ;
}
}
.set--hov:is(:focus-visible, :focus-within) {
--_notHov: ;
} この空変数トリックにより、次のような書き方ができます。
var(--_isHov, {ホバー時に適用させたい値})var(--_notHov, {非ホバー時に適用させたい値})
例えば color: var(--_isHov, red) とした要素の場合、hover時に--_isHovが未定義となるため、color:redが適用されるようになります。
var(--_isHov, ...) var(--_notHov, ...)とするとホバー前後のスタイルを1行で書くこともできますが、box-shadowなどの半角スペースで区切って値を調整するプロパティではこの書き方無効となります。
-hov:test.-hov\:test { color: var(--_isHov, green) var(--_notHov, red); /* hover時はgreen, 非hover時はred*/ box-shadow: var(--_isHov, var(--bxsh--30)); /* hover時はshadowをつける(非hover時は無効な値) */ opacity: var(--_notHov, var(--o--pp)); /* 非hover時は不透明度を下げる(hover時は無効な値) */}-hov:testのプレビュー<div class="set--hov -hov:test -p:30 -bd -bdc:current ">BOX</div>さらに、親要素にset--hovを付与してその子要素で--_isHov変数と--_notHov変数を使うことで、親要素のhoverをトリガーとして子要素のスタイルを変化させることも可能になります。
例えば、親のボックスがhoverされたら、その内部の画像をズームするようなケースで活用でき、-hov:in:zoomクラスが標準で用意されています。
.-hov\:in\:zoom { --transitionProps: scale; scale: var(--_isHov, 1.1);}-hov:in:zoomの使用例<a href="###" class="l--frame set--hov is--boxLink -ar:21/9 -ov:hidden"> <img class="has--transition -hov:in:zoom" src="https://cdn.lism-css.com/img/a-2.jpg" width="960" height="640" loading="lazy" /> <div class="is--layer -bgc" style="--c: #fff; --bgc: rgb(0 0 0 / 50%)"></div> <div class="l--center is--layer -c" style="--c: #fff;"> <span class="-fz:xl">バナーリンク</span> </div></a>活用例は hoverの解説ページ を参照してください。
hover時の挙動をコントロールする -hov プロパティクラスの使い方について解説します。
set--bleed
片側ブリードレイアウトを組むのに便利な--bleed 変数を生成するクラス。
コンテンツ幅(--contentSize)の外側の余白量がセットされます。ただし、ガター幅(--gutter / --gutter--base) を下限とし、これより狭くなる場合はガター幅を返します。
.set--bleed {
--bleed: max(var(--gutter, var(--gutter--base)), calc((100cqi - min(100cqi, var(--contentSize, var(--sz--m)))) / 2));
} var(--bleed)を活用する例Lorem ipsum dolor sit amet. Consec tetur adipi scing elit, sed do eiusmod tempor Inc ididunt ut. Labore et dolore magna aliqua.
Lorem ipsum dolor sit amet. Consec tetur adipi scing elit, sed do eiusmod tempor Inc ididunt ut.

<div class="is--container"> <div class="is--wrapper has--gutter -contentSize:s -py:30 -bgc:base-2"> <p>Lorem ipsum dolor sit amet. Consec tetur adipi scing elit, sed do eiusmod tempor Inc ididunt ut. Labore et dolore magna aliqua.</p> </div> <div class="l--columns set--bleed -contentSize:s -cols_sm -g:0 -g_sm -ai:center" style="--cols:1;--cols_sm:2;--g_sm:var(--s10)"> <div class="l--box has--gutter -ps -py:30 -py_sm" style="--ps:var(--bleed);--py_sm:0"> <p>Lorem ipsum dolor sit amet. Consec tetur adipi scing elit, sed do eiusmod tempor Inc ididunt ut.</p> </div> <div class="l--frame -bdrs:inner -ar:3/2"> <img src="https://cdn.lism-css.com/img/u-5.jpg" width="1920" height="1280" alt=""> </div> </div></div>set--bdrsInner
親要素の角丸(--bdrs)とPadding(--p)の値から、その内側の角丸(--bdrs--inner)を自動計算するためのクラスです。
親要素にset--bdrsInnerをクラスをセットし、子要素では-bdrs:innerをセットすることで、計算された--bdrs--innerをセットすることができます。
(親要素ではbdrsとpの指定が必須となります。)
.set--bdrsInner {
--bdrs--inner: calc(var(--bdrs, 0px) - var(--p, 0px));
} 
<div class="set--bdrsInner -p:15 -bdrs:40 -bd -bxsh:20"> <div class="l--frame -bdrs:inner -ar:og"> <img src="https://cdn.lism-css.com/img/u-5.jpg" width="1920" height="1280" alt="" /> </div></div>p, bdrsはブレイクポイントで値を変えても変数管理されているため、set--bdrsInnerの角丸もレスポンシブ対応できます。
<Lism p={[10, 15]} bd bdrs={['30', '40']} class="set--bdrsInner"> <Lism bd p="20" bdrs="inner" bgc="base-2"> Example </Lism></Lism>