OpenDesign 设计系统实战:BMW M 汽车运动子品牌的黑场视觉规范与组件实现指南
2026/9/19 9:39:57 网站建设 项目流程

OpenDesign 设计系统实战:BMW M 汽车运动子品牌的黑场视觉规范与组件实现指南

【免费下载链接】open-design🎨 Best DeepSeek Harness Design Plugin. The open-source Claude Design alternative. 🖥️ Local-first desktop app. 🖼️ Your coding agent becomes the design engine: prototypes, landing pages, dashboards, slides, images & video — real files, HTML/PDF/PPTX/MP4 export. 🤖 Claude Code / Codex / Cursor / DeepSeek Harness / OpenCode & 20+ CLIs via BYOK.项目地址: https://gitcode.com/gh_mirrors/opend/open-design

导读

本文以 OpenDesign 仓库内置的 design-systems/bmw-m/DESIGN.md 为核心,系统拆解 BMW M 这一「汽车运动性能子品牌」的设计系统包:从近纯黑画布、M 三色条纹、BMW Type Next 拉丁字体的排版纪律,到零圆角工业按钮、全出血汽车摄影、96px 节拍间距等组件与布局规则。读完本文,你将掌握如何用{token.refs}引用体系落地一套完整的暗色汽车运动风格界面,并了解仓库内 tokens.css、components.html、design-tokens.json 与 components.manifest.json 等实现文件如何与设计规范一一对应、互相校验。

1. 包结构与阅读路径

在设计系统 2.0 的包约定(见 manifest.json)中,bmw-m是一个od-design-system-project/v1规范下的 bundled 包,属于 Automotive(汽车)分类。包内文件及其职责如下:

文件职责
DESIGN.md视觉意图、约束与反模式(本文主体)
USAGE.md包的使用契约与阅读顺序
tokens.css结构化 token 绑定,首个 artifact 的<style>起点
design-tokens.json56 个 token 的契约化 JSON 输出
tailwind-v4.cssTailwind v4 适配层
components.html组件参考夹具(reference fixture)
components.manifest.json组件清单与 token 引用统计
source/evidence.md审计证据说明
preview/colors / typography / spacing 三页视觉预览
system/index.html、kit.html、kit.dark.html、tokens.default.json 等系统级产出

USAGE.md 给出的推荐阅读顺序是:先读 USAGE.md 理解包契约 → 再读 DESIGN.md 掌握视觉意图与反模式 → 把tokens.css粘贴进第一个 artifact 的<style>块 → 用components.manifest.json做组件清单速查,需要精确选择器时打开components.html→ 需要视觉抽查时看preview/页面。值得注意,source/evidence.md 明确声明该包源自 OpenDesign 精选的 bundled fixture,并不主张对上游官网做过重新抓取,因此设计文档中的量化结论应视为基于已分析页面集的观察证据。

2. 视觉主题与氛围:摄影即品牌电压

BMW M 的分析对象是官方编辑与营销页面,其核心氛围一句话概括:近纯黑画布({colors.canvas}— #000)承载白色 BMW Type Next Latin 大标题,品牌能量全部来自全出血(full-bleed)汽车摄影,UI 镀铬件保持极简

关键特征包括:

  • 近纯黑画布 + 白字贯穿所有已分析的编辑与营销页面;配置器、账户、结算、订单管理等流程未解析,可能引入浅色表面;
  • 展示级标题默认使用 UPPERCASE 的 BMW Type Next Latin Light;更重的粗体大写仅保留给标签、按钮、卡片标题和观察到的 M 专属强调;
  • M 三色条纹({colors.m-blue-light}#0066b1 →{colors.m-blue-dark}#1c69d4 →{colors.m-red}#e22718)只作为 4px 品牌条、M 字标点缀和赛车镀铬出现,绝不做按钮或填充
  • 摄影铺满整个 band,车辆永远是视觉主体,UI 镀铬退让为叠加在摄影上的小号白色标签;
  • 按钮扁平、0px 圆角、全大写加字距标签——「工业精密的矩形轮廓」本身就是品牌;
  • 全系统圆角基本为零,少数例外是圆形图标按钮(如轮播箭头)与已确认的小号 toggle 药丸;
  • 间距慷慨且对齐网格:{spacing.section}(96px)分隔主要 band,{spacing.xxl}(64px)用于 hero 摄影 band 内部,{spacing.xl}(40px)用于内容卡片内部。

从源码结构看,tokens.css 与 components.html 提供的是归一化后的浅色参考实现--bg: #f7f8fa--surface: #ffffff),而 DESIGN.md 描述的是目标黑场视觉规范;二者是「意图规范」与「可复用夹具」的分工关系,在落地暗色 BMW M 界面时应以 DESIGN.md 的颜色与排版语义为准,同时复用 tokens.css 的 token 命名骨架。

3. 色彩体系与角色分工

品牌与强调色

Token色值角色
{colors.primary}#ffffff主类型与 CTA 颜色:h1/h2/h3 展示字、暗底正文、主按钮文字(按钮本体透明或画布色,白字+描边即按钮)
{colors.m-blue-light}#0066b1M 三色条纹第一段;M 徽章点缀与赛车镀铬
{colors.m-blue-dark}#1c69d4三色条纹中段,BMW 传承蓝,被复用为 M 条纹中带
{colors.m-red}#e22718第三段,标志性 M-Power 红,用于条纹与赛车节奏标注
{colors.electric-blue}#0653b6独立电动车强调色,用于 M xDrive 电动车型页面,比传承蓝更冷、更数码

表面色

Token色值角色
{colors.canvas}#000000默认页面地板,真黑
{colors.surface-soft}#0d0d0d与黑几乎无差的表面,用于规格表单元格与页脚相邻条
{colors.surface-card}#1a1a1a卡片、次级按钮、图标按钮背景
{colors.surface-elevated}#262626再亮一档,用于暗色 band 内的嵌套卡片
{colors.carbon-gray}#2b2b2b碳纤维质感表面,用于技术规格卡

发丝线与边框

  • {colors.hairline}#3c3c3c:暗底上的 1px 分隔色,用于正文分区、表格行、卡片轮廓;
  • {colors.hairline-strong}#262626:与surface-elevated同值,边框更像「升一阶的表面」而非墨线。

文字色

  • {colors.on-dark}#ffffff:暗画布上的全部标题与主文字;
  • {colors.body}#bbbbbb:默认正文(比纯白略冷),正文段落与次级元数据;
  • {colors.body-strong}#e6e6e6:强调正文 / 导语段;
  • {colors.muted}#7e7e7e:页脚链接、面包屑、图注。

语义色

  • {colors.warning}#f4b400:极少用于技术警告标注;
  • {colors.success}#0fa336:订单确认态(营销面少见)。

对照归一化实现,tokens.css 的--accent: #0066b1--meta: #0066b1正好对应 M Blue Light,--danger: #e4002b接近 M Red 的强调应用,--success: #16a34a承担语义成功色;而 design-tokens.json 的 token 契约报告显示 56 个 token 全部具备tokens.css源码行级背书(sourceBackedTokens: 56,评分 100,等级 excellent),--accent-hover--accent-active使用color-mix(in oklab, var(--accent), black 8%/14%)派生,无需手工维护深浅变体。

4. 字体规则:克制对比,而非硬性 700/300 二分

字体家族与回退

BMW Type Next Latin 是 BMW 的授权展示 + 正文字体。回退链建议对齐既有 BMW 设计系统:展示优先BMWTypeNextLatin Light,正文/UI 用BMWTypeNextLatin,最后回退到Helvetica, Arial, Hiragino Kaku Gothic ProN, Hiragino Sans, Meiryo, sans-serif(覆盖日文环境)。归一化实现中 tokens.css 提供了--font-display--font-body"BMWTypeNext", "Helvetica Neue", Arial, sans-serif)及等宽--font-mono

字重基线:

  • 展示:Light(300)用于大号 h1/h2 编辑头条(除非抓取的 M 页面明显用了更重的静态字重);
  • 正文/UI:regular(400)用于段落、描述性文案与常驻导航;
  • 强调:700 用于按钮、分类标签、卡片标题;900 仅在明确观察到导航强调时使用。

核心原则是对比与克制,而不是硬性的 700/300 二分:大号展示用 Light、阅读文字用 regular、更重的字重只给短 UI 标签或 M 专属强调,避免「中粗字重糊成一片」。

层级表(完整 token 规格)

Token字号字重行高字距用途
{typography.display-xl}80px300 Light1.00Hero h1("THE ULTIMATE"、"MORE BMW M.")
{typography.display-lg}56px300 Light1.050章节头("MORE FROM BMW M MAGAZINE.")
{typography.display-md}40px300/4001.10子章节头、车型名
{typography.display-sm}32px4001.150CTA band 头、分类页标题
{typography.title-lg}24px7001.30三列网格的卡片标题
{typography.title-md}20px4001.40卡片副标题、导语段
{typography.title-sm}18px4001.40规格标注、引言段
{typography.label-uppercase}14px7001.31.5px分类 tab、"VIEW MORE" 行内标签
{typography.body-md}16px4001.50默认正文
{typography.body-sm}14px4001.50页脚正文、Cookie 同意、小字
{typography.caption}12px4001.40.5px图注、图片来源行
{typography.button}14px7001.01.5px全部按钮标签(大写、加字距)
{typography.nav-link}14px4001.40.5px顶部导航菜单项

排版原则与字体替代

系统的气质是「轻量的建筑感展示字 + 清爽的常规正文」,重字重只服务于短标签与动作镀铬。字距是非平凡的:按钮标签与分类标签的 1.5px tracking 让文字有「机械加工」而非「打字」的质感;展示标题保持 0 字距,让 BMW Type 自身的字高在放大后自然处理间距。h1/h2 的 UPPERCASE 是默认语态——句首大写只出现在正文与引言段,很少出现在标题上;全大写是品牌语态信号而非风格选择。

若 BMW Type Next Latin 不可用,Inter(可变字体)300/400/700 是最接近的开源替代,展示字距保持 0(除非所选回退字体在大字号下显得松散);Saira Condensed可作为短赛车标签的压缩感备选。归一化实现里 components.html 将标题设为letter-spacing: var(--tracking-display)(-0.025em),并规定 h1/h2/h3 用font-family: var(--font-display)line-height: var(--leading-tight)(1.02),h1上限 820px 宽、--text-4xl78px、字重 700。

5. 组件样式清单

顶部导航

top-nav—— 每页顶部固定的黑色导航栏,高 64px,{colors.canvas}背景。左侧为 BMW M 徽标(M 三色 + BMW 圆标 + "M" 字标),中间横向主菜单(Models、Topics、Magazine、Configurator、Fastlane),右侧为语言选择器、搜索图标、账户图标。菜单项用{typography.nav-link}渲染,句首大写标签。

按钮体系

组件规格
button-primary标志性主 CTA:背景{colors.canvas}(或摄影上透明),文字{colors.on-dark}白,1px 白色描边,0px 圆角,内边距 16px×32px,高 48px;类型{typography.button}(14px / 700 / 1.5px tracking)。矩形轮廓 + 大写加字距标签即品牌按钮
button-primary-outline与主按钮同形,仅透明背景 + 白描边,用于叠在摄影上、填充按钮会与图片冲突的场景
button-on-light未解析浅色上下文(配置器、账户、结算、订单弹窗)的暂定模式:黑底白字,与暗底默认反转。落地前需对照具体流程确认
button-icon圆形图标按钮(轮播控制、分享、收藏):48×48px,{colors.surface-card}背景,白色图标居中,全圆角——系统内唯一的非矩形按钮
carousel-arrow照片轮播中 48×48 圆形箭头,形状同button-icon,带 chevron 字形
text-link行内大写加字距链接("VIEW ALL MODELS"、"READ MORE"):{typography.label-uppercase},暗底白字无下划线,多数链接旁带 → 箭头字形

归一化夹具的.btn基类(components.html)给出可参考实现:最小高度 44px、--radius-md圆角、700 字重--text-smtransition使用--motion-fast(130ms)+--ease-standard.btn-primary填充--accent、文字--accent-on,hover 用--accent-hover并上移 1px;.btn-secondary白底、--elev-ring1px 描边,hover 描边与文字转向--accent:focus-visible使用--focus-ring0 0 0 4px rgba(0, 102, 177, 0.24))——这与 DESIGN.md「2px 白描边 + 2px electric-blue 偏移环」的暗底焦点策略在不同实现层各司其职。

卡片与容器

  • hero-photo-band:全宽黑 band,全出血汽车摄影占满大部分画面;h1 用{typography.display-xl}左对齐叠在照片上,下方常有{typography.body-md}小副标题;垂直内边距{spacing.xxl}(64px);无卡片边框——照片即 band。
  • feature-photo-card:用于"MORE FROM BMW M MAGAZINE"等编辑区块的三列网格。背景{colors.surface-card},0px 圆角,内边距{spacing.lg}(24px);上半为 16:9 照片(卡片内全出血),下方依次是{typography.label-uppercase}分类标签、{typography.title-lg}标题、短正文描述。
  • model-card:用于"MORE NEW M MODELS"三列网格。背景{colors.canvas}(无卡片表面,纯照片压在黑上),0px 圆角;顶部 16:10 车型主图,下方为{typography.display-md}车型名、{typography.body-sm}短规格行、text-link("EXPLORE THIS MODEL")。
  • magazine-article-card:杂志总览页的偏文字卡片变体。背景{colors.canvas}+ 发丝线边框,0px 圆角;顶部小缩略图、{typography.label-uppercase}分类标签、{typography.title-lg}标题、正文摘要。
  • spec-cell:车型详情页技术规格单元格(发动机规格、重量、极速、0-100 时间)。背景{colors.surface-soft}(#0d0d0d),0px 圆角,内边距{spacing.lg}(24px);上方{typography.display-sm}数值,下方{typography.label-uppercase}标签。
  • motorsport-photo-card:赛车团队/赛车运动区使用的无边照片卡。无卡片表面——仅全出血照片 + 左下角小号白字叠加图注。摄影即品牌。
  • chatbot-launcher:首页右侧卡片式入口("BMW M CHATBOT")。背景{colors.surface-card},0px 圆角,内边距{spacing.lg}(24px);含 h3 标题、短提示语与启动button-primary
  • category-tab/category-tab-active:杂志与话题页的分类选择器("ALL · MAGAZINE · MODELS · LIFESTYLE · MOTORSPORT")。纯文字{typography.label-uppercase}标签;激活态文字从{colors.body}{colors.on-dark}并加 2px 白色下划线;无背景填充、无圆角。

输入与表单

  • text-input:暗底标准文本输入。背景{colors.surface-card},文字{colors.on-dark},类型{typography.body-md},0px 圆角,内边距 12px×16px,高 48px,1px 发丝线边框;聚焦时边框增粗为白色。
  • cookie-consent-card:首页右侧 Cookie 横幅卡。背景{colors.canvas}+ 1px 发丝线,0px 圆角,内边距{spacing.lg}(24px);正文{typography.body-sm};底部竖排两按钮:主描边按钮 + text-link。

签名组件

  • m-stripe-divider:承载 M 三色({colors.m-blue-light}{colors.m-blue-dark}{colors.m-red})的 4px 横向条纹。用作赛车镀铬上的分隔、品牌身份区块之间、分类 tab 的 hover 指示。是全系统最具辨识度的非排版元素。
  • cta-band-photo:页脚前"Drive an M"CTA band,承载赛车弯道全出血摄影,居中{typography.display-md}标题 + 下方button-primary-outline;垂直内边距 80px。CTA 靠全出血摄影继承页面编辑级重力,而非镀铬。

页脚

footer—— 已分析营销页面的黑色页脚:{colors.canvas}背景、{colors.body}文字,桌面端 4 列链接(BMW M Models / BMW M Lifestyle / Owners / Company),垂直内边距 64px;底行承载{typography.caption}的 BMW 企业免责声明与语言选择器。黑色页脚行为仅对编辑/营销页确认,不适用于未解析的账户或结算流程。

6. 布局原则:4px 网格与 1440px 容器

间距系统

  • 基础单位:4px
  • Token 阶梯:{spacing.xxs}4px ·{spacing.xs}8px ·{spacing.sm}12px ·{spacing.md}16px ·{spacing.lg}24px ·{spacing.xl}40px ·{spacing.xxl}64px ·{spacing.section}96px;
  • 区块纵向留白:主编辑 band 之间{spacing.section}(96px);
  • Hero 摄影 band:hero h1 + 副标题组合四周{spacing.xxl}(64px);
  • 卡片内边距:内容卡/车型卡{spacing.lg}(24px);spec-cell 表{spacing.xl}(40px);
  • 排水沟(gutter):三列网格卡片间{spacing.lg}(24px);页脚列内{spacing.md}(16px)。

归一化实现的间距 token 略有差异(--space-1--space-12,48px 封顶),并额外提供响应式区块纵向间距--section-y-desktop: 104px--section-y-tablet: 76px--section-y-phone: 52px,由 components.html 的媒体查询按1023px639px断点切换——这为 DESIGN.md 的 96px 节拍提供了可落地的三档自适应版本。

网格与容器

  • 营销页最大内容宽度约1440px居中——比典型 SaaS 更宽,给摄影留呼吸空间(归一化实现--container-max: 1220px,居中且margin-inline: auto);
  • 编辑正文:单 12 列网格;摄影 band 全出血(不受最大宽度限制);
  • 卡片网格:桌面 3 列 → 平板 2 列 → 移动 1 列;
  • 页脚:桌面 4 列 → 平板 2 列 → 移动 1 列。

留白哲学

BMW M 信任摄影完成视觉工作:摄影周围的留白是克制的——车填满画面,文案以紧贴对齐的列落在照片下方或侧边。出现留白处(正文区块之间、CTA 周围)一律统一为{spacing.section}(96px)。系统应避免装饰性氛围背景与装饰渐变;当照片裁切会导致白字对比度不足时,允许功能性对比 scrim。

7. 层级与纵深:无投影,深度来自摄影

层级处理用途
Flat无阴影无边框正文区块、顶部导航、页脚、照片 band
Soft hairline1px{colors.hairline}边框区块分隔、卡片轮廓、表格行
Card surface{colors.surface-card}叠在 canvas 上——无阴影特性照片卡、杂志卡、聊天机器人启动器
Photographic depth全出血摄影、无边裁切Hero band、赛车运动特性——深度靠主体而非镀铬

系统不使用投影,也不做分层镀铬。深度完全来自摄影(主体 + 镜头 + 光线)以及黑画布与略高一阶的{colors.surface-card}之间的对比。

装饰性深度

  • M 条纹分隔m-stripe-divider):4px 高横向分隔条,承载 M 三色。用于赛车镀铬、车型详情页头、品牌身份时刻。这是系统唯一的真正「装饰」元素——克制使用以标记重要性;
  • 碳纤维表面:技术规格页使用{colors.carbon-gray}(#2b2b2b)单元格叠加细微纹理。这是单页处理,不是全系统模式;
  • 摄影深度:全出血的车就是深度。摄影中的光线(赛道灯、落日轮廓光)完成了 SaaS 系统中投影承担的高度工作。

归一化实现保留了对应的 elevation 阶梯 token:--elev-flat: none--elev-ring: 0 0 0 1px var(--border)(发丝线级)、--elev-raised: 0 22px 56px rgba(17, 24, 39, 0.12)(面板级),可在 tokens.css 中查看。

8. Do's and Don'ts

Do

  • 每个页面都以全出血汽车摄影锚定——车是品牌电压,镀铬退让;
  • 展示标题用{typography.display-xl}{typography.display-lg}的 UPPERCASE;句首大写的展示字读起来不像这个品牌;
  • 排版保持纪律:Light 展示字、regular 正文、更重的字重只给短标签、按钮、卡片标题或观察到的 M 专属强调;
  • M 三色条纹只用于品牌身份时刻——字标点缀、赛车镀铬、车型徽章,绝不做按钮填充或表面;
  • 默认 0px 圆角;全圆几何仅保留给圆形图标按钮;
  • 全大写标签统一 1.5px 字距——「机械加工」感不可妥协;
  • 主编辑 band 之间用{spacing.section}(96px)保持网格对齐的纵向节奏。

Don't

  • 不要在 M 三色({colors.m-blue-light}/{colors.m-blue-dark}/{colors.m-red})与已记录的 electric-blue 强调色之外引入品牌色;
  • 不要让正文用 Light 而牺牲可读性——正文通常保持 regular 400,Light 只留给大号展示与次级编辑时刻;
  • 不要用圆角按钮——矩形轮廓就是品牌,圆角读起来像消费科技而非赛车运动;
  • 不要在 hero 字后放装饰渐变背景——若裁切导致对比度失败,加功能性黑 scrim、重排裁切、或把文字移入实心黑面板;
  • 不要连续两个 band 用同一种表面模式——节奏应为「照片 band → 规格表 → 照片 band → 杂志网格 → 照片 band」,连续两个纯文字 band 会读起来像企业官网;
  • 不要把 M 条纹当按钮填充——条纹是分隔/点缀,绝不是动作表面;
  • 按钮标签的字距不要低于 1.5px——正是字距让它们有「机械加工」感。

9. 响应式行为

断点

名称宽度关键变化
Mobile< 768px汉堡导航;hero h1 从 80→48px;演示网格 1 列;照片卡全宽堆叠;页脚 4 列→1
Tablet768–1024px顶栏保持横向但收紧;卡片网格 2 列;规格表 2 列
Desktop1024–1440px完整顶栏;卡片网格 3 列;规格表 4 列
Wide> 1440px与桌面相同但呼吸感更强;内容最大 1440px

触控目标

  • button-primary尽量保持 48×48px 最小尺寸,绝不低于 44×44px 指针目标;
  • button-iconcarousel-arrow恰好 48×48px——稳超 44×44px 下限;
  • text-input高 48px;
  • 分类 tab 为纯文字标签,至少 12px 垂直内边距与足够横向间距,形成 44px 最小有效点击区。

摄影上文字与焦点

  • 摄影上的白字正文对比度至少4.5:1;大号展示文字与图标描边至少3:1
  • 首选裁切纪律:把文字放在暗赛道、阴影、座舱或黑色车身区域;避免放在天空、车灯、白漆、混凝土或反光高光上;
  • 裁切不够时使用功能性黑 scrim(rgba(0,0,0,0.45)~rgba(0,0,0,0.70))垫在文字区后;左→右渐变 scrim 仅可作为无障碍层,不作装饰;
  • scrim 仍不达标时,把文案移入{colors.canvas}实心面板,最小内边距 24px;
  • 黑底或照片背景上的焦点可见性:2px 白描边 + 2px{colors.electric-blue}偏移环;未解析的浅色表面则反转为 2px electric-blue 描边 + 可见偏移。

折叠策略

  • 顶栏 < 768px 折叠为汉堡菜单,展开为全屏黑色遮罩,顶部带 M 三色条纹;
  • 摄影在所有断点保持全出血——绝不收进带边距的容器;
  • 卡片网格减少列数而非缩放卡片;摄影保持原生宽高比;
  • 规格表从 4 列 → 2 列 → 1 列折叠;规格数值无论列数多少都保持{typography.display-sm}
  • M 条纹分隔在所有断点保持 4px 高。

图片行为

  • Hero 摄影响应式裁切——桌面更宽的裁切,移动端竖向裁切;
  • 生活方式与赛车摄影保持原生宽高比;系统从不 letterbox 或 pillarbox;
  • M 字标 + 三色徽标随视口宽度等比缩放。

10. Agent Prompt Guide:给编码 Agent 的使用准则

这份指南同样服务于在 OpenDesign 工作流中调用该设计系统的 Agent 与 LLM:

  1. 一次只聚焦一个组件,引用其组件名(hero-photo-bandspec-cell);
  2. 新组件默认 0px 圆角,只有圆形图标按钮可用全圆几何;
  3. 变体(-active-disabled)作为组件名旁的独立散文条目存在;
  4. 处处使用{token.refs},绝不内联 hex;
  5. 永不记录 hover 态,只记录 Default 与 Active/Pressed;
  6. 展示标题默认 UPPERCASE + Light/建筑感;正文保持句首大写 regular;700 只用于短强调与 UI 标签;
  7. M 三色仅限品牌身份——绝不扩展为「主操作」的系统 token;
  8. 白字叠照片每次都需要对比度策略:先裁切、再 scrim、必要时实心面板;
  9. 对强调没把握时:更大的摄影优先于更大的字号。

已知缺口(诚实边界)

  • 色彩频率分析器把白字(计数 955)记为最高频 token;黑画布是从截图推断的——body 背景采样未将其列为顶部调色板条目,但页面无疑为黑底白字;
  • 精确的 M 三色断点取自 BMW 公开品牌指南;截图中条纹是小元素,此分辨率下的像素采样无法可靠区分 #0066b1 与 #1c69d4。文档断点以 BMW Design Works 发布的品牌规范为准;
  • BMW Type Next Latin 字重证据不完整:BMW 家族系统记录 Light(300)展示与 regular(400)正文/UI;BMW M 更重的标签用法应视为观察到的强调,而非对 BMW 家族排版的全局替换;
  • 动画与过渡时长(轮播过渡、hover 揭示、配置器交互)不在范围内;
  • text-input默认态外的表单校验态未提取——错误/成功输入变体需要配置器或订单流程确认;
  • 配置器表面(带颜色/轮毂/内饰选择器的车辆定制页)不在已分析 URL 集内,其色板网格、对比面板、价格摘要卡未记录于此;
  • Cookie 同意遮罩遮挡了截图中的部分首页 hero;次级 hero 处理(不同车型轮播)可能有未捕获的变体。

11. 与包内实现文件的校验闭环

DESIGN.md 不是孤立文档,它与包内其余文件构成可审计的校验闭环:

  • tokens.css 是 token 的唯一事实源,design-tokens.json 记录 56 个 token 全部有tokens.css行级背书(如--accent指向tokens.css:17),评分 100 / excellent;
  • components.manifest.json 统计了 48 个选择器、26 个类、19 个元素,并按组列出 token 引用:按钮组引用--accent/--accent-on/--elev-ring/--radius-md等 12 个 token,输入组引用--border/--radius-sm/--space-*,卡片组引用--elev-raised/--radius-lg/--surface——这与 DESIGN.md 的组件语义一一对应;
  • system/tokens.default.json 提供 Tailwind 接入所需的默认映射(colorPrimary: #0066b1borderRadius: 8);
  • preview/ 的 colors / typography / spacing 三页可做视觉抽查;
  • USAGE.md 同时给出约束:保留 schema token 名称以保证跨品牌切换可靠;用--accent承担主操作/链接/焦点;优先复用components.manifest.json的组件组;不在tokens.css:root块之外写裸 hex;design-tokens.jsontailwind-v4.css是派生产物,应由报告与 token 样式表再生成而非手工编辑。

12. 落地建议:如何基于本包产出 BMW M 风格界面

  1. 建底:把 tokens.css 的:root块整体复制进首屏 artifact 的<style>,组件 CSS 只引用 token,不写裸值;
  2. 定画布:按 DESIGN.md 的暗场语义覆写表面 token(canvas #000、surface-card #1a1a1a、hairline #3c3c3c),保持 token 命名不变以维持跨品牌切换契约;
  3. 排组件:对照 components.manifest.json 的组件组(buttons / inputs / cards / badges / links / typography / layout)逐组实现,需要精确选择器时参考 components.html;
  4. 验对比度:每处白字叠照片按「先裁切 → 再 scrim → 最后实心面板」的顺序处理,正文 4.5:1、大号展示 3:1;
  5. 查反模式:逐条对照第 8 节 Do's and Don'ts,重点检查 0px 圆角、1.5px 字距、96px 节拍、M 条纹仅作身份标记;
  6. 抽检预览:用 preview/ 页面做颜色、字体、间距三方面的视觉快检,再决定是否进入 craft/ 中的 color 与 accessibility-baseline 基线复核(manifest 的craft.suggested正是这两项)。

【免费下载链接】open-design🎨 Best DeepSeek Harness Design Plugin. The open-source Claude Design alternative. 🖥️ Local-first desktop app. 🖼️ Your coding agent becomes the design engine: prototypes, landing pages, dashboards, slides, images & video — real files, HTML/PDF/PPTX/MP4 export. 🤖 Claude Code / Codex / Cursor / DeepSeek Harness / OpenCode & 20+ CLIs via BYOK.项目地址: https://gitcode.com/gh_mirrors/opend/open-design

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询