本文へスキップ

スタイルとレイアウト

レイアウト、タイポグラフィ、色の宣言はすべて、camelCase のキーで style に書きます。長さは論理ピクセルです。

#スタイルメソッド

<View style={{ padding: 16, gap: 12, bg: "#18181b", color: "#fafafa" }} />

真偽値のプリセットは、Go と同じヘルパーに対応しています。

<View style={{ flexCol: true, p3: true, gap2: true, roundedLg: true }}>
  <Text style={{ textLg: true, fontSemibold: true }}>Panel title</Text>
</View>

roundedLg は 8 ピクセルの半径、p3 は 12 ピクセルです。独自の値には borderRadius、padding、gridTemplateColumns、width を使います。falsy なプリセット(false、null、undefined)はそのプリセットをオフにします。

#スタイルのマージ

スタイルの配列は左から右へマージされます。後ろのフィールドが前のフィールドを上書きします。falsy なエントリは無視されます。

<View style={[base, selected() && selectedStyle, { padding: 20 }]} />

リアクティブなスタイルオブジェクトからフィールドを取り除くと、そのプロパティはクリアされます。

#スタイルの再利用

import type { JSX } from "@quickgui/solid";

const panel = { p3: true, roundedXl: true, bg: "#20242c" } satisfies JSX.Style;
<View style={panel}><Text>Reusable panel</Text></View>

値が変化に追従するようにするときは、getter を JSX に置きます。

#Flexbox

display、flexDirection、flexGrow、flexShrink、flexBasis、整列、gap を使います。フレックスでスクロールする子には minWidth: 0 または minHeight: 0 を設定し、縮小できるようにします。

#グリッド

display: "grid" と、トラック、配置、スパンのフィールドを使います。

#テキストと色

フォントファミリー、ウェイト、サイズ、折り返し、選択はテキストに適用されます。色は hex、CSS の色文字列、またはパックされた RGBA 値を受け付けます。

#インタラクション状態

<Button style={{
  bg: "#2563eb",
  hover: { bg: "#1d4ed8" },
  active: { opacity: 0.8 },
  focusVisible: { outlineColor: "#93c5fd", outlineWidth: 2 },
}}>Save</Button>

#グループと名前付きグループのホバー

祖先で group に名前を付け、子孫で groupHover または groupActive を使うと、一緒にスタイルされます。