Styledex
← Index

Launch Keynote

发布会主题

stylekitMITProfessional · professionalLight · lightMedium · mediumNeutral · neutralMuted · mutedSerif · serifGeneral · generalLanding · landing

苹果发布会式的产品揭幕美学:纯黑舞台、发光产品、超大紧字距标题、唯一电蓝强调。招牌技法是滚动逐帧序列——一个 sticky 画布随滚动播放预渲染的产品动画,一屏一产品一句话,像万亿市值的产品页。

NNorthwind
Product · Pricing
Specimen
Make the work feel finished

One interface, dressed in this style. Compare type, color, radius, and density.

128
Active
4.8
Score
12ms
Edge

Attribution

"Launch Keynote" from https://github.com/AnxForever/stylekit (MIT). © AnxForever. api/styles/launch-keynote @ bfa7da909e86.

https://github.com/AnxForever/stylekit · api/styles/launch-keynote · bfa7da909e86 · © AnxForever

Do

  • 纯黑 #000000 舞台,无边框无纹理,产品自己发光,留白即张力
  • 一屏一产品一句话:每个视口只承载一个主张,滚动是叙事节拍
  • 逐帧揭幕:sticky 满屏 canvas 随滚动播放 webp 帧序列,滚动条即播放头
  • 帧序列进视口才懒加载(IntersectionObserver),poster 先画防白屏
  • 巨字紧字距 hero:系统 SF 级无衬线,clamp ~7rem,tracking -0.03em
  • 唯一电蓝 #2997FF 强调:链接/CTA/关键数字;其余黑、近白 #F5F5F7、中灰 #86868B
  • 规格用大数字网格呈现,冷静克制可信;显式 aspect-ratio 防 CLS
  • prefers-reduced-motion 下静态渲染最终帧、callout 全可见

Don't

  • 禁止多彩渐变或第二支强调色(唯一电蓝之外全是黑白灰)
  • 禁止在滚动处理器里逐帧读 offsetTop / getBoundingClientRect(layout thrash)
  • 禁止页面一载就预载全部 96 帧(必须 IO 懒加载,否则流量灾难)
  • 禁止把关键信息烘焙进帧图里(帧可能没加载、reduced-motion 只显一帧)
  • 禁止卡片边框、圆角装饰堆砌破坏纯黑舞台的无限深
  • 禁止忽略 prefers-reduced-motion 与 devicePixelRatio 封顶

Prompt

Create an Apple-keynote style flagship hardware launch page with:
1. A pitch-black #000000 stage, near-white #F5F5F7 text, one electric-blue #2997FF accent for links, CTAs and key spec numbers - no second color
2. A frosted keynote nav bar (black/70 backdrop-blur) with an Overview/Specs/Buy set, Buy in blue
3. A huge tight-tracking hero headline (system SF stack, clamp up to ~7rem, -0.03em)
4. THE SIGNATURE: a section ~350vh tall with a sticky top-0 h-screen canvas that plays a 96-frame webp sequence as the scrollbar becomes the playhead; lazy-load the frames only in view via IntersectionObserver, paint a poster first, throttle the scroll with requestAnimationFrame reading position once per frame, and keep the last drawn frame if one has not loaded
5. 3-4 feature callouts that fade + translate in at progress milestones (opacity/transform only)
6. A spec grid of large numbers, dark #1D1D1F cards for chip/camera/battery
7. prefers-reduced-motion: skip the scroll wiring and statically render the final frame with all callouts visible; devicePixelRatio capped at 2; explicit aspect-ratios to prevent CLS

---
"Launch Keynote" from https://github.com/AnxForever/stylekit (MIT). © AnxForever. api/styles/launch-keynote @ bfa7da909e86.
powered by Styledex — https://styledex.dev

Tokens

DTCG

{
  "$schema": "https://www.designtokens.org/schemas/2025.10/format.json",
  "$description": "Launch Keynote. \"Launch Keynote\" from https://github.com/AnxForever/stylekit (MIT). © AnxForever. api/styles/launch-keynote @ bfa7da909e86.",
  "$extensions": {
    "dev.styledex": {
      "id": "stylekit-launch-keynote",
      "license": "MIT",
      "attribution": "\"Launch Keynote\" from https://github.com/AnxForever/stylekit (MIT). © AnxForever. api/styles/launch-keynote @ bfa7da909e86.",
      "banner": "powered by Styledex — https://styledex.dev"
    }
  },
  "color": {
    "background": {
      "$type": "color",
      "$value": "#000000"
    },
    "foreground": {
      "$type": "color",
      "$value": "#f5f5f7"
    },
    "card": {
      "$type": "color",
      "$value": "#000000"
    },
    "card-foreground": {
      "$type": "color",
      "$value": "#f5f5f7"
    },
    "primary": {
      "$type": "color",
      "$value": "#000000"
    },
    "primary-foreground": {
      "$type": "color",
      "$value": "#fafaf9"
    },
    "secondary": {
      "$type": "color",
      "$value": "#f5f5f7"
    },
    "secondary-foreground": {
      "$type": "color",
      "$value": "#f5f5f7"
    },
    "accent": {
      "$type": "color",
      "$value": "#2997ff"
    },
    "accent-foreground": {
      "$type": "color",
      "$value": "#fafaf9"
    },
    "muted": {
      "$type": "color",
      "$value": "#0f0f0f"
    },
    "muted-foreground": {
      "$type": "color",
      "$value": "#9f9fa1"
    },
    "border": {
      "$type": "color",
      "$value": "#242424"
    },
    "destructive": {
      "$type": "color",
      "$value": "#dc2626"
    },
    "ring": {
      "$type": "color",
      "$value": "#000000"
    }
  },
  "font": {
    "sans": {
      "$type": "fontFamily",
      "$value": [
        "ui-sans-serif",
        "system-ui",
        "sans-serif"
      ]
    },
    "serif": {
      "$type": "fontFamily",
      "$value": [
        "ui-serif",
        "Georgia",
        "serif"
      ]
    },
    "mono": {
      "$type": "fontFamily",
      "$value": [
        "ui-monospace",
        "SFMono-Regular",
        "Menlo",
        "monospace"
      ]
    }
  },
  "radius": {
    "base": {
      "$type": "dimension",
      "$value": "0.5rem"
    }
  },
  "spacing": {
    "base": {
      "$type": "dimension",
      "$value": "1rem"
    }
  },
  "shadow": {
    "base": {
      "$type": "shadow",
      "$value": "0 12px 40px rgba(0,0,0,0.7)"
    }
  }
}

CSS

/* powered by Styledex — https://styledex.dev */
/* "Launch Keynote" from https://github.com/AnxForever/stylekit (MIT). © AnxForever. api/styles/launch-keynote @ bfa7da909e86. */
:root {
  --background: #000000;
  --foreground: #f5f5f7;
  --card: #000000;
  --card-foreground: #f5f5f7;
  --primary: #000000;
  --primary-foreground: #fafaf9;
  --secondary: #f5f5f7;
  --secondary-foreground: #f5f5f7;
  --accent: #2997ff;
  --accent-foreground: #fafaf9;
  --muted: #0f0f0f;
  --muted-foreground: #9f9fa1;
  --border: #242424;
  --destructive: #dc2626;
  --ring: #000000;
  --radius: 0.5rem;
  --font-sans: ui-sans-serif, system-ui, sans-serif;
  --font-serif: ui-serif, Georgia, serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
  --spacing: 1rem;
  --shadow: 0 12px 40px rgba(0,0,0,0.7);
}

Tailwind

/* powered by Styledex — https://styledex.dev */
/* "Launch Keynote" from https://github.com/AnxForever/stylekit (MIT). © AnxForever. api/styles/launch-keynote @ bfa7da909e86. */
/** Tailwind theme extend for Launch Keynote (stylekit-launch-keynote) */
module.exports = {
  "theme": {
    "extend": {
      "colors": {
        "background": "#000000",
        "foreground": "#f5f5f7",
        "card": "#000000",
        "primary": "#000000",
        "primary-foreground": "#fafaf9",
        "secondary": "#f5f5f7",
        "accent": "#2997ff",
        "muted": "#0f0f0f",
        "border": "#242424",
        "destructive": "#dc2626",
        "ring": "#000000"
      },
      "borderRadius": {
        "lg": "0.5rem"
      },
      "fontFamily": {
        "sans": [
          "ui-sans-serif",
          "system-ui",
          "sans-serif"
        ],
        "serif": [
          "ui-serif",
          "Georgia",
          "serif"
        ],
        "mono": [
          "ui-monospace",
          "SFMono-Regular",
          "Menlo",
          "monospace"
        ]
      },
      "boxShadow": {
        "styledex": "0 12px 40px rgba(0,0,0,0.7)"
      }
    }
  }
};

shadcn

/* powered by Styledex — https://styledex.dev */
/* "Launch Keynote" from https://github.com/AnxForever/stylekit (MIT). © AnxForever. api/styles/launch-keynote @ bfa7da909e86. */
@layer base {
:root {
  --background: #000000;
  --foreground: #f5f5f7;
  --card: #000000;
  --card-foreground: #f5f5f7;
  --primary: #000000;
  --primary-foreground: #fafaf9;
  --secondary: #f5f5f7;
  --secondary-foreground: #f5f5f7;
  --accent: #2997ff;
  --accent-foreground: #fafaf9;
  --muted: #0f0f0f;
  --muted-foreground: #9f9fa1;
  --border: #242424;
  --destructive: #dc2626;
  --ring: #000000;
  --radius: 0.5rem;
  --font-sans: ui-sans-serif, system-ui, sans-serif;
  --font-serif: ui-serif, Georgia, serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
  --spacing: 1rem;
  --shadow: 0 12px 40px rgba(0,0,0,0.7);
}
}