ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AI时代前端设计如何做到impeccable:CLI与浏览器扩展实战

AI时代前端设计如何做到impeccable:CLI与浏览器扩展实战

1. 从"impeccable"说起:一个被低估的前端设计关键词

第一次看到"impeccable"这个词,是在一个前端项目的代码注释里。当时团队里有人在review一段CSS,写了句"this spacing is impeccable",我盯着这个词愣了几秒——无懈可击的、无可挑剔的。放在前端设计语境下,它描述的是一种近乎偏执的完成度:间距、对齐、层级、动效曲线、边界状态,每一处都经得起放大镜审视。

这个词最近和AI coding agents、frontend design、CLI、browser extension这几个热搜词绑在一起出现,不是偶然。它背后指向的是一个很具体的痛点:当AI开始大规模参与前端代码生成,我们怎么保证产出是"impeccable"的,而不是"能跑就行"的?

我自己带过几个用AI辅助前端开发的项目,踩过的坑足够写一本小册子。AI生成的组件,功能上往往没问题,但视觉上一眼就能看出"机器味"——间距用的是默认值,颜色是随手取的十六进制,hover状态缺失,focus ring被outline: none粗暴干掉,响应式断点全靠猜。这些问题单个看都不致命,堆在一起就是"不专业"三个字。

所以这篇内容我想聊的,不是某个具体工具怎么装怎么用,而是围绕"impeccable"这个标准,把AI coding agents、CLI工作流、browser extension调试、frontend design规范这几块串起来,讲清楚一个前端从业者怎么在AI时代守住设计质量的底线。适合谁看?如果你正在用或者准备用AI辅助写前端,如果你对"AI生成的UI总差点意思"这件事有共鸣,如果你想建立一套可复现的质量检查流程,那接下来的内容应该对你有用。

我会从设计标准的拆解开始,然后讲CLI工具链怎么搭,再讲browser extension在调试环节怎么用,最后给一套完整的实操流程和避坑清单。全程按我自己项目的真实做法来,不整虚的。

2. 拆解"impeccable":前端设计质量的五个硬指标

2.1 为什么"能跑"和"无懈可击"之间隔着一条河

先把这个标准具象化。我总结下来,一个前端界面要称得上impeccable,至少要在五个维度上过关:间距系统、色彩体系、排版层级、交互状态、响应式行为。这五个维度不是拍脑袋想的,是我在code review里反复被挑刺之后归纳出来的。

间距系统是最容易暴露问题的。AI生成代码时,padding和margin经常是"看起来差不多"的数值,8px、12px、10px混着用。人眼对间距的敏感度远超想象,4px的偏差在密集布局里就能被感知到。impeccable的做法是建立一套基于基准单位的间距刻度,比如以4px为基数,只用4、8、12、16、24、32、48、64这几档,所有间距必须从这套刻度里取值。

色彩体系的问题更隐蔽。AI很喜欢用纯黑#000和纯白#fff,但真实项目里,纯黑文字在白色背景上的对比度是21:1,刺眼且不自然。impeccable的界面通常用接近黑的深灰,比如#1a1a1a或者#111,正文文字对比度控制在12:1到15:1之间。这个数值不是随便定的,WCAG的AAA标准要求正文对比度至少7:1,但实际体验下来,7:1偏灰,12:1左右最舒服。

排版层级考验的是对信息优先级的理解。h1到h6的字号、字重、行高、字间距,必须形成清晰的视觉阶梯。我见过太多AI生成的页面,h2和h3的字号只差2px,用户根本分不清层级。impeccable的做法是字号至少按1.25倍递增,字重跨度要拉开,行高随字号增大而收紧。

交互状态是AI最容易偷懒的地方。一个按钮,至少要有default、hover、active、focus、disabled五种状态。AI通常只给default和hover,focus直接outline: none,disabled连样式都不写。这在可访问性上是硬伤,键盘用户根本不知道焦点在哪。

响应式行为则是综合考验。断点设置、流式布局、内容重排、图片适配,每一项都有讲究。AI生成的响应式代码经常是"断点一设,布局一改"的粗暴做法,中间过渡区间体验很差。

2.2 五个指标的具体量化标准

光说概念没用,得给可执行的数值。下面这张表是我自己在项目里用的检查清单,每个指标都有明确的合格线。

维度检查项合格标准常见AI错误
间距基准单位4px或8px,全站统一混用10px、15px等非标值
间距刻度档位不超过8档随意取值,无规律
色彩正文对比度12:1至15:1纯黑#000,对比度21:1
色彩辅助文字对比度至少4.5:1浅灰#ccc,对比度不足
排版字号递增比1.25倍至1.333倍相邻层级差2px
排版行高正文1.5至1.7,标题1.2至1.3全站统一1.5
交互状态覆盖至少5种状态只有default和hover
交互focus可见必须有可见焦点环outline: none
响应式断点数量3至5个只有1个移动断点
响应式过渡区间有中间态适配断点处硬切换

这张表看着简单,但每一条背后都是血泪。比如focus ring这一条,我早期做项目时为了"视觉干净"把outline干掉,结果被无障碍测试工具直接标红,返工重做。后来学乖了,focus ring不仅要有,还要设计得好看——用box-shadow模拟,颜色用品牌色,宽度2px,偏移2px,既可见又不突兀。

2.3 为什么AI coding agents特别容易在这些地方翻车

理解了标准,再来看AI为什么做不好。核心原因是训练数据的分布问题。AI学的是海量代码,而海量代码里,大部分项目的设计质量是"及格线附近"的。真正impeccable的项目是少数,它们的代码模式在训练集中占比很低。所以AI的"默认输出"天然偏向平庸。

另一个原因是缺乏视觉反馈。AI写代码时看不到渲染结果,它只能根据代码模式推断。间距是8px还是10px,对它来说只是token的差异,它不知道10px在视觉上会破坏节奏。色彩对比度更是如此,AI不会去算相对亮度,它只是"觉得"这个颜色搭配常见。

还有一个原因是状态覆盖的边际成本。给一个按钮写5种状态,代码量是只写default的3倍。在AI的优化目标里,代码简洁性往往被隐性加权,所以它会倾向于省略"看起来不必要"的状态。但恰恰是这些状态,决定了界面的完成度。

所以用AI做前端,不能指望它一步到位。正确的姿势是:让AI做初稿,人来做精修,用工具链做兜底。这就是接下来要讲的CLI和browser extension的用武之地。

3. CLI工具链:把设计检查变成可执行的命令

3.1 为什么是CLI而不是GUI

聊到工具,很多人第一反应是找个可视化工具。但我实测下来,前端设计质量检查这件事,CLI才是最优解。原因有三:可集成、可复现、可版本化。

可集成意味着能塞进CI/CD流程。每次提交代码,自动跑一遍设计检查,不合格就卡住。GUI工具做不到这一点,你得手动打开、手动检查、手动记录。

可复现意味着同样的命令在任何机器上跑出同样的结果。GUI工具依赖环境、依赖版本、依赖操作顺序,换台机器可能就变了。

可版本化意味着检查规则本身可以进Git。团队里谁改了规则,diff一目了然,review起来清清楚楚。

热搜词里出现的codex cli、zcode cli、trae cli这些,本质上都是把AI能力封装成命令行工具。它们的价值不在于"AI"这个标签,而在于把原本需要打开编辑器、选中代码、输入提示词、等待生成这一串操作,压缩成一条命令。对于设计检查这种高频、重复的任务,CLI的效率优势是碾压性的。

3.2 搭建一套设计检查CLI的完整步骤

下面是我自己项目里用的方案,基于Node生态,因为前端项目本来就在这个生态里,不用额外装运行时。

第一步:初始化项目并安装依赖

mkdir design-lint && cd design-lint npm init -y npm install stylelint stylelint-config-standard postcss-html --save-dev

stylelint是CSS检查的事实标准,postcss-html让它能解析Vue、HTML里的style块。这两个是基础,后面再按需加插件。

第二步:配置检查规则

在项目根目录建.stylelintrc.json,写入针对impeccable标准的规则:

{ "extends": ["stylelint-config-standard"], "rules": { "declaration-property-value-allowed-list": { "margin": ["/^(0|4px|8px|12px|16px|24px|32px|48px|64px|auto)$/"], "padding": ["/^(0|4px|8px|12px|16px|24px|32px|48px|64px)$/"] }, "color-no-hex": [true, { "message": "禁止直接使用十六进制颜色,请使用设计token" }], "declaration-property-value-disallowed-list": { "outline": ["none"], "transition": ["/^all/"] }, "unit-allowed-list": ["px", "rem", "em", "%", "vh", "vw", "s", "ms", "fr"] } }

这里几条规则值得展开说。declaration-property-value-allowed-list把margin和padding的取值限制在预设刻度里,超出范围直接报错。color-no-hex禁止硬编码颜色,强制走设计token。outline: none被明确禁止,因为它是可访问性的头号杀手。transition: all也被禁,因为它会触发不必要的重绘,性能上不划算。

第三步:接入设计token

建一个tokens.css,把所有颜色、间距、字号定义成CSS变量:

:root { --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-6: 24px; --space-8: 32px; --space-12: 48px; --space-16: 64px; --color-text-primary: #1a1a1a; --color-text-secondary: #595959; --color-text-tertiary: #8c8c8c; --color-bg-primary: #ffffff; --color-bg-secondary: #f5f5f5; --color-border: #e0e0e0; --color-accent: #2563eb; --font-size-xs: 12px; --font-size-sm: 14px; --font-size-base: 16px; --font-size-lg: 20px; --font-size-xl: 25px; --font-size-2xl: 31px; --font-size-3xl: 39px; }

字号用的是1.25倍递增:16 × 1.25 = 20,20 × 1.25 = 25,以此类推。这个比例在视觉上既有区分度又不突兀。

第四步:写一个包装脚本

在package.json里加scripts:

{ "scripts": { "lint:css": "stylelint 'src/**/*.{css,vue,html}'", "lint:css:fix": "stylelint 'src/**/*.{css,vue,html}' --fix", "check:contrast": "node scripts/check-contrast.js" } }

check:contrast是我自己写的一个小脚本,用WCAG公式算所有文字色和背景色的对比度,低于阈值的直接报错。这个脚本大概50行,核心就是相对亮度计算:

function relativeLuminance(hex) { const rgb = hexToRgb(hex); const [r, g, b] = rgb.map(v => { v /= 255; return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4); }); return 0.2126 * r + 0.7152 * g + 0.0722 * b; } function contrastRatio(hex1, hex2) { const l1 = relativeLuminance(hex1); const l2 = relativeLuminance(hex2); const lighter = Math.max(l1, l2); const darker = Math.min(l1, l2); return (lighter + 0.05) / (darker + 0.05); }

这个公式是WCAG官方定义的,算出来的比值就是对比度。正文要求至少4.5:1,大字号文字可以放宽到3:1,但按我的经验,正文做到12:1以上体验最好。

3.3 把CLI检查塞进Git钩子

工具搭好了,得让它自动跑起来,不然没人会记得手动执行。用husky加lint-staged,在提交前自动检查改动的文件:

npm install husky lint-staged --save-dev npx husky init

然后在.husky/pre-commit里写:

npx lint-staged

.lintstagedrc.json配置:

{ "*.{css,vue,html}": ["stylelint --fix", "stylelint"], "*.{js,ts,jsx,tsx}": ["node scripts/check-contrast.js"] }

这样每次commit,改动的样式文件会自动跑一遍检查,不合格直接卡住。我用了大半年,最大的感受是:检查前置之后,返工率降了至少一半。以前是代码写完、页面渲染出来、肉眼发现间距不对、再回去改,现在是在写的时候就被告知"这个值不在刻度里",顺手就改了。

注意:stylelint的--fix能自动修一部分问题,比如把10px改成8px,但它不会帮你判断该改成8还是12。自动修复只是省去手动敲键盘,判断还得人来做。

3.4 关于codex cli这类AI命令行工具的定位

热搜里codex cli、zcode cli、trae cli这些工具,我实际用过几个。它们的核心能力是把自然语言转成代码,或者对现有代码做批量修改。放在设计检查这个场景里,它们的价值是批量修复。

比如stylelint报了一堆"间距值不在刻度内"的错误,你可以把错误列表喂给AI CLI,让它批量替换成最接近的刻度值。这比手动一个个改快得多。但要注意,AI的替换逻辑不一定符合你的设计意图,改完必须review。

另外像/compact、/model、/resume这些命令,是AI CLI的会话管理功能。/compact压缩上下文,/model切换模型,/resume恢复之前的会话。这些功能在长时间的设计迭代里很有用,因为设计讨论往往需要来回好几轮,能恢复上下文就不用重复描述背景。

至于codex cli remotion这个组合,我理解是用AI CLI来生成Remotion视频代码。Remotion是用React写视频的框架,它的设计规范和网页设计有相通之处,间距、色彩、排版的原则是通用的。如果你做的是视频里的UI动效,这套检查思路同样适用。

4. Browser Extension:调试环节的最后一公里

4.1 为什么CLI检查完了还需要浏览器扩展

CLI能检查代码,但检查不了渲染结果。有些问题只在浏览器里才暴露:字体加载后的实际行高、flex布局在特定宽度下的换行、动画在真实帧率下的表现、不同缩放比例下的像素对齐。这些必须用浏览器扩展来抓。

热搜里"enter the code from your two-factor authentication app or browser extension"这句话,说的是两步验证。浏览器扩展在这里的角色是验证码的载体。这个场景和设计检查无关,但它提醒我一件事:浏览器扩展是前端从业者日常最高频的工具形态之一,值得单独拿出来讲。

4.2 我常用的三类设计调试扩展

第一类:视觉测量

这类扩展能在页面上叠加网格、标尺、间距标注。我常用的是能显示元素盒模型、显示元素间距、显示对齐线的。用法很简单,装上之后按快捷键激活,鼠标悬停到任意元素上,就能看到它的padding、margin、尺寸、位置。检查间距是否统一,用这个最快。

第二类:色彩取色与对比度

取色器扩展能吸取页面上任意像素的颜色,直接给出hex、rgb、hsl值。更重要的是对比度检查功能,选中文字和背景,直接告诉你对比度比值,低于标准的会标红。这个比我自己写脚本算快多了,适合快速抽查。

第三类:响应式预览

这类扩展能在当前窗口里模拟不同设备宽度,不用开开发者工具就能快速切换。我通常设几个常用断点:375px、768px、1024px、1440px,一键切换,看布局在各断点下的表现。比开发者工具的device mode轻量,适合快速扫一遍。

4.3 用扩展抓AI生成代码的典型问题

AI生成的代码,在浏览器里最容易暴露三类问题。

第一类是字体渲染差异。AI按16px字号、1.5行高写代码,但实际字体加载后,不同字体的x-height和字重差异会让视觉行高变化。中文和英文混排时更明显。用测量扩展一看,实际行高可能和预期差2到3px。

第二类是flex和grid的边界情况。AI写的flex布局,在内容超长、内容为空、内容只有一项这三种情况下,表现往往和预期不符。比如justify-content: space-between在只有一项时会靠左,但设计意图可能是居中。这类问题必须用响应式预览扩展,把内容替换成极端情况来测。

第三类是动画的性能表现。AI写的transition和animation,在代码层面看不出问题,但实际跑起来可能掉帧。用浏览器的performance面板配合扩展,能定位到是哪个属性在触发重绘。常见元凶是transition: all和box-shadow动画。

提示:浏览器扩展装多了会拖慢浏览器。我的做法是只留3到5个高频使用的,其他按需临时启用。设计调试类扩展尤其吃性能,因为它们要实时计算布局信息。

4.4 扩展和CLI的配合方式

CLI管代码层,扩展管渲染层,两者配合的流程是这样的:

  1. 写完代码,先跑CLI检查,把代码层面的问题清掉
  2. 打开浏览器,用扩展做视觉检查,抓渲染层面的问题
  3. 把扩展发现的问题反馈到代码,再跑CLI确认没引入新问题
  4. 重复2和3,直到两边都干净

这个循环听起来繁琐,但实际跑起来很快。熟练之后,一个组件的检查大概两三分钟。比起上线后被用户发现间距不对、再走一遍发布流程,这个成本可以忽略不计。

5. 完整实操:从零搭建一个impeccable的前端组件

5.1 项目初始化与工具链配置

光讲理论没意思,走一遍完整流程。假设要做一个卡片组件,要求达到impeccable标准。

先建项目:

npm create vite@latest impeccable-card -- --template vue cd impeccable-card npm install

然后装检查工具:

npm install stylelint stylelint-config-standard postcss-html husky lint-staged --save-dev

配置文件和前面讲的一样,这里不重复。重点讲组件本身怎么写。

5.2 设计token的定义与使用

在src/styles/tokens.css里定义token,前面已经给过完整版。这里补充一点:token的命名要有语义。不要用--color-blue-500这种,要用--color-accent、--color-text-primary这种。因为蓝色可能会变,但"强调色"这个语义不变。改主题的时候,只改值不改名,所有引用自动生效。

5.3 卡片组件的完整实现

<template> <article class="card" :class="{ 'card--interactive': interactive }"> <div class="card__media" v-if="$slots.media"> <slot name="media" /> </div> <div class="card__body"> <h3 class="card__title">{{ title }}</h3> <p class="card__desc">{{ description }}</p> </div> <div class="card__footer" v-if="$slots.footer"> <slot name="footer" /> </div> </article> </template> <script setup> defineProps({ title: { type: String, required: true }, description: { type: String, default: '' }, interactive: { type: Boolean, default: false } }) </script> <style scoped> .card { display: flex; flex-direction: column; background: var(--color-bg-primary); border: 1px solid var(--color-border); border-radius: 8px; overflow: hidden; transition: box-shadow 200ms ease, transform 200ms ease; } .card--interactive { cursor: pointer; } .card--interactive:hover { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); transform: translateY(-2px); } .card--interactive:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; } .card--interactive:active { transform: translateY(0); box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06); } .card__media { aspect-ratio: 16 / 9; background: var(--color-bg-secondary); } .card__media :deep(img) { width: 100%; height: 100%; object-fit: cover; display: block; } .card__body { padding: var(--space-4); display: flex; flex-direction: column; gap: var(--space-2); } .card__title { font-size: var(--font-size-lg); font-weight: 600; line-height: 1.3; color: var(--color-text-primary); margin: 0; } .card__desc { font-size: var(--font-size-sm); line-height: 1.6; color: var(--color-text-secondary); margin: 0; } .card__footer { padding: var(--space-3) var(--space-4); border-top: 1px solid var(--color-border); display: flex; align-items: center; gap: var(--space-2); } </style>

这段代码里有几个细节值得说。

transition明确写了box-shadow和transform,没用all。因为all会监听所有属性变化,包括那些不该有过渡的,性能上不划算。

focus-visible而不是focus。focus-visible只在键盘导航时触发,鼠标点击不触发。这样既保证了键盘用户能看到焦点,又不会让鼠标用户觉得"点一下怎么有个框"。

aspect-ratio: 16 / 9给媒体区固定比例,避免图片加载前后布局跳动。这是CLS(累积布局偏移)优化的关键。

间距全部走token,没有硬编码。gap用的是--space-2,padding用的是--space-4,都在刻度内。

5.4 跑一遍检查看结果

写完组件,跑检查:

npm run lint:css

如果一切正常,应该没有输出。故意改坏一个值试试,把padding: var(--space-4)改成padding: 15px,再跑:

src/components/Card.vue 18:3 ✖ Unexpected value "15px" for property "padding" declaration-property-value-allowed-list

报错信息很明确,告诉你哪一行、什么值、违反了哪条规则。改回var(--space-4),再跑,干净。

5.5 浏览器里的最终确认

代码检查过了,打开浏览器看实际效果。用测量扩展检查:

  • 卡片内边距是不是16px
  • 标题和描述之间的间距是不是8px
  • 卡片圆角是不是8px
  • hover时阴影和位移是否符合预期
  • Tab键切换时焦点环是否可见

再切到375px宽度,看卡片是否正常堆叠,文字是否溢出,图片是否变形。

这一套走下来,一个组件的检查大概5分钟。如果每个组件都这么过一遍,整个项目的设计质量就有保障了。

6. 常见问题与排查技巧实录

6.1 检查工具报错但不知道从哪改

这是最高频的问题。stylelint报了一堆错,但新手看着一脸懵。我的建议是按错误类型分批处理,不要试图一次改完。

先改declaration-property-value-allowed-list这类硬性规则,因为它们有明确的合格值,改起来没有歧义。再改color-no-hex这类需要替换token的,这个要对照设计稿找对应token。最后改outline: none这类需要重新设计的,因为要补焦点样式,工作量最大。

如果错误太多,用--fix先自动修一批,剩下的手动处理。但记住,自动修复只处理能确定的情况,不确定的它会跳过。

6.2 设计token和实际设计稿对不上

这种情况通常发生在设计稿用了非标准值的时候。比如设计师给了个padding: 20px,但你的刻度里只有16和24。

我的处理原则是:优先改设计稿,而不是改刻度。因为刻度一旦为单个组件破例,就会蔓延,最后刻度形同虚设。跟设计师沟通,说明20px不在系统里,建议用16或24,通常设计师会接受。如果确实需要20px这个值,那就把它加进刻度,但要评估这个值会不会在其他地方也用,如果只是孤例,宁可改设计。

6.3 浏览器扩展和开发者工具冲突

有些扩展会注入自己的样式或脚本,和开发者工具打架。表现是打开开发者工具后,扩展的标注错位或者消失。

解决办法是用无痕窗口做扩展调试。无痕窗口默认不加载扩展,需要手动开启。这样扩展和开发者工具互不干扰。或者用两个浏览器,一个装扩展做视觉检查,一个干净环境做代码调试。

6.4 AI生成的代码批量替换后引入新问题

用AI CLI批量替换间距值时,经常出现"改是改了,但改错了"的情况。比如把所有10px替换成8px,但有些10px其实是边框宽度,不该动。

我的做法是替换前先分类。把错误列表按属性分组,margin和padding一组,border一组,font-size一组。只对margin和padding做批量替换,其他手动处理。替换后跑一遍完整检查,确认没引入新错误。

6.5 常见问题速查表

问题现象可能原因排查方法解决方案
stylelint报错但代码看着没问题值不在刻度内对照token表改成最接近的刻度值
浏览器里间距和代码不一致浏览器默认样式干扰检查reset.css加全局reset
focus环看不见outline被覆盖搜索outline: none改用focus-visible
响应式断点处布局跳变缺少过渡区间在断点间拖动窗口加中间断点或流式布局
动画卡顿transition: all看performance面板指定具体属性
对比度不达标用了浅灰文字用对比度扩展测加深文字颜色
AI替换后新错误替换范围过大看diff缩小替换范围,手动review

6.6 几个我踩过的坑

坑一:过度依赖自动修复。早期我图省事,每次都是--fix一把梭,结果有次它把margin: 0 auto里的0改成了4px,因为规则里0和4px都在允许列表,它选了"更规范"的那个。但margin: 0 auto的0是有意义的,改成4px就破坏了居中。从那以后,自动修复后我一定看diff。

坑二:token命名太具体。一开始我用--color-blue-button这种命名,后来按钮改成绿色,名字和值对不上了,改起来很痛苦。后来全部改成语义化命名,--color-accent,值随便改,名字不用动。

坑三:检查规则太严导致开发效率下降。有段时间我把规则设得极严,连1px边框都要求走token,结果写每个组件都要先想"这个值有没有token",效率反而低了。后来放宽了,只对间距、颜色、字号做强制,边框、圆角这类允许直接写值。规则是为了服务开发,不是为了卡开发。

坑四:忽略暗色模式。token体系建好后,加暗色模式只需要覆盖token值,组件代码一行不用改。但如果一开始没建token,后面加暗色模式就是灾难。所以token要趁早建,哪怕项目初期只有亮色模式。

7. 把impeccable变成团队习惯

工具和流程讲完了,最后聊点软的。impeccable这个标准,靠一个人坚持没用,得变成团队习惯。

我的做法是把检查结果可视化。每次CI跑完,生成一个报告,显示这次提交的设计质量分。分数低的提交,在群里自动提醒。人都是要面子的,看到自己的提交分数低,下次就会注意。

另一个做法是建立组件库的"金标准"。挑几个做得最好的组件,作为参考实现。新人写组件时,先看金标准怎么写的,照着来。这比看文档快得多,因为代码是活的。

还有就是定期review检查规则。规则不是一成不变的,项目阶段不同,重点不同。初期可能重点抓间距和颜色,后期可能重点抓性能和可访问性。规则要跟着项目走,不能一套规则用到底。

我自己最大的体会是:impeccable不是一次达成的,是每次提交时多花两分钟攒出来的。AI能帮你写代码,但帮不了你建立标准。标准是人定的,也是人守的。工具只是让守标准这件事变得不那么痛苦而已。

如果非要说一个最值得先做的事,我建议从间距刻度开始。因为间距是最直观的,改了之后视觉提升最明显,团队也最容易达成共识。间距统一了,再推色彩和排版,阻力会小很多。一步一步来,别想着一次把所有标准都立起来,那样只会让团队反感。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进