メインコンテンツへスキップ
menumenu tanreiexpand_morecontrasttranslate
tanreiexpand_more
はじめにWebReactSwiftUIJetpack ComposeFlutterReact Nativeプリセット自分のデザインシステムを作るAI エージェントと Tanrei を使うブランドデザイントークンデザインシステムとカスタマイズTheme Studioカラータイポグラフィアイコン形状エレベーションモーションインタラクション状態振る舞いレイアウトアクセシビリティ言葉カラートークンタイプスケールトークン形状トークンエレベーショントークンモーショントークン状態トークンスペースと寸法のトークンコンポーネントボタンメインアクションボタンセグメントボタンボタングループメニュー付きボタンツールバーコピーボタンチェックボックスラジオボタンスイッチチップメニュースライダースライダーフィールドカレンダーDateTimePickerフィールドグループラジオグループチェックボックスグループセレクトセレクトフィールドメニューバーファイルアップロードファイルピッカー 上級者向けドロップゾーンテキスト入力欄 上級者向けテキストフィールドチップフィールドフィールドコンボボックス 上級者向けコンボボックスフィールド数値入力欄 上級者向け数値フィールドカラー入力欄 上級者向けカラーフィールドワンタイムコード入力欄 上級者向けワンタイムコードフィールド埋め込みテキスト入力欄 上級者向けチャットコンポーザーカード区切り線モーダルレイヤー 上級者向けダイアログリストリスト行ボトムシートサイドシートカルーセルコードブロックテーブルポップオーバーステップアコーディオン説明リスト図アプリシェルページヘッダーツリービュータイムライン画像プレビューハンドルサイズ変更できる枠スクロールエリアバッジプログレスインジケーターメーターナンバーティッカーローディングインジケータースナックバーツールチップキーボードショートカットタグインラインコードコールアウトアバター空の状態タググループスケルトンファイル項目色見本マーキーテキストタブタブビューアプリバーナビゲーションバーナビゲーションドロワー検索リンクページネーション前後のリンクステッパーパンくずリスト目次リンクカードFAB メニューステータスTanrei の作り方コントリビューションライセンスと帰属
ホーム基礎レイアウト

レイアウト

ウィンドウサイズクラス、スペーシングのスケール、そしてクラスの間でレイアウトを適応させる方法。

content_copyMarkdown で表示

ウィンドウサイズクラス

Tanrei は、使える幅を 5 つのクラスで表します。クラスが指すのは、レイアウトが置かれているウィンドウやコンテナであり、デバイスの種類ではありません。分割表示のタブレットは compact ですし、開いた折りたたみスマートフォンは compact ではありません。

クラス 幅 典型的なレイアウト
Compact 600 未満 1 カラム。ナビゲーションは下部のバーか、メニューの中に置きます。
Medium 600–839 余白を広げた 1 カラム、またはコンテンツが許せば 2 カラム。折りたたんだナビゲーションドロワー(アイコンの列)を使えるようになります。
Expanded 840–1199 リストと詳細のような 2 ペイン。ナビゲーションは常に表示します。
Large 1200–1599 2 ペインまたは 3 ペイン。テキストの幅を決めるのはウィンドウではなく、1 行の長さです。
Extra-large 1600 以上 Large と同じで、余白をたっぷり取ります。コンテンツを引き伸ばして埋めないでください。

幅の単位は、密度に依存しない単位です。Web では CSS ピクセル、Apple のプラットフォームではポイント、Android では dp、Flutter では論理ピクセルです。

クラスの間での適応

レイアウトが境界をまたぐときは、次のような予測しやすい方法のいずれかで変えます。

  • 見せる。 タップの先にあったペインを表示します。リストの横に詳細ビューを並べる場合などです。
  • 分ける。 1 つのカラムを 2 つに分けます。
  • 大きさを変える。 ペインと余白を比例して変えます。
  • 位置を変える。 要素を移します。たとえば、下部のナビゲーションバーを、横の折りたたんだナビゲーションドロワーに移します。
  • 入れ替える。 コンポーネントを、大きな画面向けの対応物に替えます。ボトムシートをサイドシートにする場合などです。

ほとんどの画面は、3 つの配置でまかなえます。レスポンシブなグリッドにカードを並べるフィード、リストと詳細、そして補助ペインを伴うコンテンツです。

スペーシング

スペーシングのトークンは、8 を基準とした倍数と分数です。トークン名の数字は、この基準に対するパーセンテージです。つまり space100 は 8、space50 は 4、space200 は 16 です。

トークン 値 プレビュー
--tanrei-sys-space-space0 0px
--tanrei-sys-space-space25 2px
--tanrei-sys-space-space50 4px
--tanrei-sys-space-space75 6px
--tanrei-sys-space-space100 8px
--tanrei-sys-space-space125 10px
--tanrei-sys-space-space150 12px
--tanrei-sys-space-space175 14px
--tanrei-sys-space-space200 16px
--tanrei-sys-space-space250 20px
--tanrei-sys-space-space300 24px
--tanrei-sys-space-space400 32px
--tanrei-sys-space-space450 36px
--tanrei-sys-space-space500 40px
--tanrei-sys-space-space600 48px
--tanrei-sys-space-space700 56px
--tanrei-sys-space-space800 64px
--tanrei-sys-space-space900 72px

生成元 design/tokens/tanrei.light.tokens.json, tokens/sys/space.tokens.json

小さい段階はコンポーネントの内側に、スケールの中ほどはコンポーネントの間に、大きい段階はセクションの間に使います。タッチターゲットの間のスペーシングが space100 を下回ることはありません。

テキストの幅

本文は、1 行あたりおよそ 45〜80 文字に収めます。Large と Extra-large のウィンドウでは、テキストのカラムに上限を設け、残りは余白か補助ペインに回します。