Lism CSS の特長
Lism CSS がどんな考えで作られているかを、CSS 設計・トークン・Primitive・Property Class・コンテナクエリの6つの点から紹介します。
Lism CSS は、クラスを集めただけの道具ではありません。サイト全体の CSS をどう組み立てるかまで決めてくれる「設計ごと入ったフレームワーク」です。このページでは、その特長を6つに分けて見ていきます。
1. サイト全体の CSS の設計を引き受ける#
CSS を書くとき、ふつうは「名前をどう付けるか」「どのスタイルを強くするか」を自分で考えます。Lism はそこを最初から決めてくれます。
- デザイントークン(余白や色などの決まった値のセット)を用意している
- クラス名と変数名の付け方が決まっている(名前のルール)
- レイヤー(CSS の強さの順番)が決まっている(CSS のレイヤーと強さの順番)
レイヤーは、弱いほうから次の順に並んでいます。
lism-base → lism-block → lism-trait → lism-primitive → lism-custom → lism-utility
lism-baseの中には、ブラウザのくせをそろえるresetという小さな層が入っていますlism-blockは、ボタンやカードのような自分で作る部品(b--)を置く層です。わざと弱い位置にあるので、あとから付けたis--・has--・l--などのクラスが勝ちますlism-traitはis--(役割を名乗る)とhas--(機能を足す)のクラスの層ですlism-primitiveの中は、layoutとatomicの2つの層に分かれていますlism-customは、自分で作るクラスや、Lism のクラスを上書きするときに使う層です
設計を丸ごと引き受けるかわりに、ほかの CSS フレームワークと一緒に使うことは考えられていません。
はじめに Lism の決まりを覚える手間はかかります。そのかわり、作るたびに「CSS の設計をどうするか」で悩む時間がぐっと減ります。
2. リズムが生まれるトークン#
余白や文字の大きさは、決まった段階の値(トークン)から選びます。段階の幅に工夫があるので、同じトークンを使い回すだけで、見た目に自然なリズム(くり返しの心地よさ)が出ます。
値がそろうので、あとから直すのも楽になり、ページどうしの見た目もそろいます。くわしくは デザイントークン を見てください。
3. レイアウトの部品(Primitive)#
Web サイトでよく出てくる並べ方を小さな部品に分け、どこでも使い回せるようにしています。この考え方は、Every Layout という本の「レイアウトプリミティブ」を手本にしています。
| クラス | 何をする? |
|---|---|
l--flex |
Flexbox で並べる |
l--stack |
縦に積む |
l--columns |
同じ幅の列に分ける |
l--center |
真ん中に置く |
l--switchColumns |
置いた場所の幅で、横並びと縦並びが切り替わる |
ほかにもたくさんあります。一覧と選び方は Primitive ってなに? にまとめています。
4. CSS 変数を使った Property Class#
Lism には、Tailwind CSS と同じように、CSS のプロパティ(色・大きさなど、見た目の種類)1つずつに対応したクラスがあります。これを Property Class と呼びます。
ただし、「全部のプロパティ × 全部の画面の幅」のクラスを用意しているわけではありません。たとえば md:p-30 のような、画面の幅つきのクラスはありません。かわりに、-p_md のようなクラスと --p_md という CSS 変数(あとから値を入れられる入れ物)を組み合わせます。
<div class="-p:20 -p_sm -p_md -bd" style="--p_sm: var(--s30); --p_md: var(--s40)">BOX</div>
React では次のように書けます。
<Lism p={[20, 30, 40]} bd>
BOX
</Lism>
このしくみのおかげで、CSS のファイルを小さく保ったまま、よく使うプロパティを画面の幅で簡単に切り替えられます。
書き方は Property Class の書き方 と 画面の幅で切り替える(レスポンシブ) で説明しています。
5. CSS を書くことも前提にしている#
Lism は、HTML にすべてを書き込む Tailwind CSS とも、JavaScript の中にスタイルを閉じこめる CSS-in-JS とも違う考え方をとっています。
- 大まかなレイアウトや軽い飾り:クラスと CSS 変数で手早く組む
- 細かい見た目や作り込み:ふつうの CSS でていねいに書く
クラスだけで全部を済ませようとはせず、CSS を書いたほうがよいところは CSS で書く、という分担です。
6. 画面の幅に頼らないレイアウト#
Lism には、画面の幅(メディアクエリ)を使わずに、置かれた箱の幅に合わせて自分で形を変える Primitive があります。これも Every Layout の考え方からきています。
- l--autoColumns:箱の幅に合わせて、列の数が自動で決まる
- l--switchColumns:箱の幅で、横並びと縦並びが自動で切り替わる
- l--withSide:メインの部分に残したい幅をもとに、並び方が自動で切り替わる
切り替えはコンテナクエリが基本#
ブレイクポイント(レイアウトを切り替える幅)を使ったふつうのレスポンシブも使えます。ただし Lism では、画面の幅を見るメディアクエリではなく、親の箱の幅を見るコンテナクエリを標準にしています。
コンテナクエリで値を切り替えるには、外側のどこかの要素を「幅の基準になる箱」にしておく必要があります。Lism では、その要素に is--container を付けるだけです(is--container)。
コンテナの中では position: fixed の動きが変わるなど、知っておくことが少しあります。そのかわり、部品が置かれた場所の幅に合わせて自分で形を変えるので、どこに置いても崩れにくくなります。
関連するページ#
公式ドキュメント
2026年10月5日時点の内容(lism-css 1.0.1・@lism-css/ui 0.40.1)をもとに、やさしい日本語でまとめています。