Communitygithub.com

ランディングページ仕上げ ステップ2:高級感のあるUIディテール

どのフロントエンドでも使えるエンジニアリング水準のUI仕上げルール。枠線ではなく色の階層、ダークモードの字の太さ補正、ストリーミング文字、スプリングアニメーションの数値、コンポーネント選びの基準。

ランディングページ仕上げ ステップ2:高級感のあるUIディテール とは?

ランディングページ仕上げレシピのステップ2(仕上げ)。エージェントに数値で示したルールを渡します。枠線の代わりに1〜3%の背景階層、影によるフォーカスリング、ダークモードでは細めの字、等幅数字、gridでの折りたたみ、バランスの取れた見出し、操作ごとのスプリング設定、そして取り除くべき安っぽいパターンの一覧です。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/chensiyuan040-hash/skill/tree/HEAD/ui-polish

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント


name: ui-polish description: フロントエンド UI の質感とインタラクション詳細に関するエンジニアリングパラメータ仕様(色階層、フォントウェイト補正、ストリーミングテキスト、スプリングモーション、コンポーネント選定境界)。ユーザーがフロントエンドインターフェースの作成・変更、ページ/コンポーネント/スタイル/アニメーションの作成、UIの「質感/洗練さ/安っぽさ」の最適化、モーダルやフィードバックシーン向けのコンポーネント選定を要求する場合に使用。React+AntD、Vite、HTML/CSS など任意のフロントエンドスタック対応。Engineering-grade UI polish rules: color-tier layering, font-weight compensation, streaming text, spring motion parameters, and component selection boundaries.

UI 質感仕様

インターフェースの「高級感」は定量化可能な細部パラメータに由来します。本仕様に従ってスタイルとアニメーションを作成。プロジェクト既存の design token / AntD テーマと競合する場合は、プロジェクトを優先。デュアルテーマは常に html[data-theme] スコープの CSS 変数で実装し、light-dark() は使用しない(旧カーネル互換性の落とし穴のため)。

一、質感の鉄則

  1. レイヤリングにボーダーを使わない: 階層は 1%~3% の明度差の背景色階で表現。純粋な黒 #000 は禁止。
    • ライト: ページ背景 #f5f5f3 / カード #fcfcfb; ダーク: #0b0b0a / #151515 / #1a1a19 / #20201e(暗から明への階層階段)
    • AntD プロジェクトは token(colorBgLayout/colorBgContainer)に合わせ、色値を個別にハードコードしない
  2. フォーカスはアウトラインではなくシャドウで: 入力フィールド/カードのフォーカス時は二重リング box-shadow(内側リングはベタ色の輪郭 + 外側リングは低透明度のプライマリカラーグロー)で「噛み合い感」を演出。デフォルトの outline は削除するが、:focus-visible の可視フォーカスは必ず保持
  3. ダークモードでのフォントウェイト補正: ダークモードではフォントウェイトを一段階下げる(400→300、可変フォントでは正確に 360)。白文字の膨張によるハロー効果を相殺。テーマに応じて CSS 変数で切り替え
  4. ストリーミングテキストの墨にじみ効果: 1 文字 90ms、blur(6px) + 半透明から鮮明に遷移。イージング cubic-bezier(.215,.61,.355,1)。隣接文字は 30ms ずらしてにじませる。文字単位の硬直した出現や段落全体のフラッシュ表示は禁止
  5. インラインアイコンの垂直配置: vertical-align: -0.125em、または flex + align-items: center でラップ
  6. 数字のガタつき防止: 統計数字/時刻/価格は常に font-variant-numeric: tabular-nums を使用。更新や変更時に幅が変動しないようにする
  7. スムーズな折りたたみ: 高さアニメーションに JS での計算は不要。display: grid + grid-template-rows: 0fr → 1fr で遷移(内側は overflow: hidden)
  8. 一行あたりの文字数調整: 本文は text-wrap: pretty、見出しは text-wrap: balance
  9. アニメーションの性格付け:
    • ドラッグ/スナップ/配置: 過減衰スプリング(stiffness 1200 / damping 80)または cubic-bezier(.2,0,0,1)、リバウンドなし、一度で固定
    • いいね/チェックマーク/成功フィードバック: 不足減衰(380 / 18)、小さなリバウンド一回、弾力感
    • 出現 150~250ms、退場 100~150ms、速くかつ控えめ
  10. フィードバックの自動消滅: コピー/保存などの一時的なフィードバックは 2~2.5 秒表示後、自動的にフェードアウトして元の状態に戻る。ユーザーによる手動クローズは不要

二、安っぽさの逆引きリスト(セルフチェック)

いずれかが該当する場合は修正:

  • 1px のボーダーですべての領域を区切っている; 広範囲にわたる純黒/純白の背景
  • フォーカス時にブラウザデフォルトの青い outline
  • ダークモードでライトモードと同じフォントウェイトを使用(白文字が太くなる)
  • ストリーミング出力で文字が硬直して出現するか段落全体がフラッシュ表示される
  • 数字の変化時にガタつく; すべてのアニメーションが同じ ease を共有し、速度の性格が異ならない
  • 一時的なフィードバックが消えず、手動クローズが必要
  • 情報量のない装飾の過剰使用: ALL-CAPS の小見出し、中点で区切られた文字列、ボタン接尾辞の →、ありとあらゆるグラデーショングロー

三、コンポーネント選定の境界(モーダルとフィードバック)

シナリオ使用するもの要点
ボトムハーフ画面でのコンテンツ閲覧、高さ調整可能(モバイル)Bottom Sheet(AntD Drawer placement="bottom")減衰ジェスチャー、段階的スナップ、高さ 3 段階 peek/half/full ≈ 25/50/90%
少数の排他的アクションの選択(モバイル)Action Sheetフラットボタン、独立したキャンセル項目、危険アクションは赤色で表示しキャンセルとは分離
操作後の軽い通知、取り消し可能Snackbar(AntD message + 取り消しボタン)下部に表示されるフローティングバー、タイムアウトで自動消滅、取り消しは操作を実際に元に戻せること
高リスク/ブロッキング確認AlertDialog(AntD Modal)背景マスクでロック; 不可逆操作の場合のみ Esc を無効にし、それ以外は保持
新機能/初心者ガイドTour(AntD Tour)ハイライト位置指定 + ステップツアー、スキップ可能
画像/メディア拡大Lightbox(antd-image または自作)スクロールズーム、Esc で閉じる
フォームフィールドバリデーションInline Alert(AntD Form バリデーション)入力フィールド下に赤文字、即時バリデーション、修正で即座に消える; グローバル message でフィールドエラーを報告しない

ブロッキング度(低→高): Snackbar < Inline Alert < Sheet < Action Sheet < Dialog。デスクトップでは Modal/message 優先、モバイルでは Sheet 系優先。迷ったらブロッキング度の低い方を選ぶ。

四、アニメーション性格ライブラリ(必要に応じて使用、すべてを一度に使わない)

  • 完了フィードバックボタン: クリック後、円形に縮小 → チェックマークをストロークで描画 → パーティクルが発散、300~400ms
  • チェックボックス連動: チェック → プログレスリングが成長 + 数字がスクロール + 上部背景が進捗に応じて変化
  • カードスタック展開: カード群が順次展開(各カード 50ms ずつずらし)、再度クリックで折りたたんでスタックに戻す
  • スナップカード + ライン描画: 横スワイプで手を離すと、最も近いカード位置にスナップ(スプリング 1200/80)。切り替え時にタイムラインを stroke-dashoffset で順次描画
  • 慣性スクロールホイール: ピッカーが慣性回転 → 減速 → 目盛りにスナップ。スワイプオーバー時にリバウンド(不足減衰 380/18)
  • 円形拡散トランジション: 指/カーソルが押された位置から clip-path: circle() で拡散して全面を覆う、400~500ms

実装は CSS transition/animation と Web Animations を優先。スプリングパラメータは framer-motion のセマンティクス(stiffness/damping)に準拠。すべてのアニメーションに prefers-reduced-motion によるフォールバックが必要(直接切り替え/フェードインで可)。

五、納品セルフチェック

  • レイヤリングは色階に依存。純黒/純白の大面積背景なし、全面ボーダーでの区切りなし
  • キーボードフォーカスが可視(二重リングシャドウ)、タッチターゲット ≥ 44px
  • ダークモードでフォントウェイト補正済み
  • 数字は tabular-nums; 本文は text-wrap: pretty
  • アニメーションは 2 段階の性格、時間は指定範囲内; prefers-reduced-motion にフォールバックあり
  • 一時的なフィードバックは 2~2.5 秒で自動消滅; フォームエラーはインラインヒントで表示

出典

パラメータは 3 つの抖音動画(2026-10)から抽出: Ludi「大企業の AI クライアントソースコードを解析、質感はこの 5 つのテクニック」「6 つの隠れたエースコンポーネント」、西瓜同学「第 14 集: AI が作ったアプリをより洗練させる 6 つのインタラクション」。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル