Lism Tips

Primitive ってなに?(選び方)

Primitive は、レイアウトを組み立てる小さな部品のクラスです。l-- と a-- の違い、一覧、列を並べるときの選び方をまとめます。

Primitive(プリミティブ)は、ページのレイアウトを組み立てるための、小さな積み木のようなクラスです。名前は l-- か a-- で始まります。

l-- と a-- の違い#

頭の文字 名前 どんなものか
l-- Layout Primitive 中に要素を入れて、並べ方を決める箱
a-- Atomic Primitive それ以上分けられない、いちばん小さな部品(線・すきま・アイコンなど)

l は layout(レイアウト)、a は atomic(原子のように小さい)の頭文字です。

Layout Primitive の一覧#

クラス どんなものか
l--box 中身をひとまとめにするだけの箱
l--flow 文章の段落どうしのすきまを自動でそろえる
l--frame 中の画像や動画を、枠の大きさに合わせて見せる
l--flex Flexbox(横や縦に並べる CSS のしくみ)で並べる
l--cluster 横に並べて、入りきらなければ折り返す
l--stack 縦に並べる
l--withSide 横に置く列とメインの列の2列にする
l--grid CSS Grid(ます目で並べる CSS のしくみ)で並べる
l--tileGrid 同じ大きさのタイルを、行と列で並べる
l--center 上下左右の真ん中に置く
l--columns 画面の幅ごとに、列の数を決めて並べる
l--autoColumns 列の幅をもとに、列の数を自動で決めて折り返す
l--switchColumns 何列かの横並びと、1列の縦並びを自動で切り替える

Atomic Primitive の一覧#

クラス どんなものか
a--decorator 飾りのための、中身の無い要素
a--divider 中身と中身のあいだの区切り線
a--icon SVG のアイコンを出す
a--spacer 要素のあいだにすきまを空けるための、中身の無い要素

いっしょに付けてよい組み合わせ#

1つの要素に Primitive を2つ付けるときは、次の決まりがあります。

組み合わせ 付けてよいか 理由
l-- と l-- だめ 同じ種類どうしは重ねない
a-- と a-- だめ 同じ種類どうしは重ねない
l-- と a-- おすすめしない ふつうは同じ要素に付けない

たとえば「縦に並べて、真ん中にも置きたい」ときは、l--stack と l--center を1つの要素に付けず、箱を2つに分けて入れ子にします。

列を並べるときの選び方#

「列を並べる」ことは、いくつかの Primitive でできます。やりたいことで選びます。

やりたいこと ◯ ぴったり △ できるが書く量が増える
同じ幅の列を N 本 columns・autoColumns grid
横並びと1列をまとめて切り替え columns・switchColumns grid
列が狭くなったら自動で折り返す autoColumns grid
横の列+メイン(幅のちがう2列) withSide columns・grid
画面の幅で列の数を変える columns grid
ブレイクポイントを使わずに対応 autoColumns・switchColumns・withSide なし

表に名前の無いものは、そのやりたいことには向いていません(名前は l-- を省いて書いています)。

ブレイクポイントは、レイアウトを切り替える画面の幅のことです。

同じ幅の列を並べる・列の数を画面の幅で変える#

l--columns を使います。列の数を決めて書くだけで済み、画面の幅ごとの列の数も指定できます。

jsx
<Columns cols={[1, 2, 3]} g="20">...</Columns>

l--grid に gtc="repeat(3, 1fr)" を付けても同じ形になりますが、列を同じ幅で並べるだけなら l--columns のほうが短く書けます。

列が狭くなったら自動で折り返す#

l--autoColumns を使います。「1列の幅はこれ以上」と決めると、入りきらない列が次の行へ回ります。画面の幅の区切りを考えなくてよいので、カードや商品、ロゴの一覧に向いています。

jsx
<AutoColumns cols="20rem" g="20">...</AutoColumns>

横並びと縦1列を一度に切り替える#

l--switchColumns を使います。使える幅が breakSize で決めた幅より狭くなると、全部が一度に縦並びになります。2列→1列のように段階を踏んで減らしたいときは、l--columns か l--autoColumns を選びます。

jsx
<SwitchColumns breakSize="s" g="20">...</SwitchColumns>

横の列とメインの2列にする#

l--withSide を使います。メインの列が mainW の幅を保てなくなると、自動で縦並びに変わります。

jsx
<WithSide sideW="240px" mainW="20rem" g="20">
  <Box>Main</Box>
  <Box isSide>Side</Box>
</WithSide>
ヒント

画像などを isSide にして先に置き、組ごとに fxd="row-reverse" を交互に付けると、横並びのときは画像が左右交互になり、縦並びのときは画像がいつも上に来ます。

画面の幅で決めて切り替えたいなら、l--grid の gta(グリッドの配置図)を切り替えても同じ見た目にできます。ただ、l--withSide のほうが短く書けます。

行と列の数を決めたタイルにする#

l--tileGrid を使います。列だけでなく行の数も決めたいときの、Grid の仲間です。

jsx
<TileGrid cols="3" rows="2" g="10">...</TileGrid>

複雑な配置をする#

l--grid を使います。場所に名前を付けて並べる、要素を同じます目に重ねる(ga="1/1")、subgrid(親のます目を子でも使う)など、Grid の配置図をもとに組むときの基本の Primitive です。gta・gtc はほかの Primitive にも付けられますが、配置図が中心なら l--grid を選びます。

関連するページ#

公式ドキュメント

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

ページの一覧