跳到正文

// FOUNDATIONS 基础

形状

四类形状的语义、圆角、线、阴影

定位与原则#

  1. 默认是直角。 面板、标签、表格都不倒角。按钮一族是例外:4px 的微圆角。
  2. 形状有含义。 换一种形状,就是在说"这是另一类东西"。
  3. 不要把任何一种形状推到极致。 全直角显得呆板,全切角显得做作。直角、切角、圆、胶囊之间的对比才是这套语言的味道。
  4. 阴影是环境光,不是投影。 所有阴影零偏移。

四类形状#

四类形状及其含义
四类形状及其含义
形状 表达什么 用在哪 来源
直角 信息、默认状态 面板、卡片、标签、表格行、页签、弹窗(按钮一族是 4px 微圆角,见下文) 实测
切角、斜楔 行动、机械、权限、导航 主要行动按钮、等级带、选区角钩、养成界面的斜向结构 社区(游戏界面);官网只在局部用斜切
圆、弧 人、技能、仪表、范围 头像、圆形翻页钮、进度环、刻度圆环、切换器旋钮 实测
胶囊 对话、筛选、资源、短状态 胶囊导航器、筛选项、货币与资源条、倒计时、切换器轨道 实测 + 社区

同一屏可以混用,但同一语义全站保持同一种形状:如果筛选项是胶囊,那所有筛选项都是胶囊。

云游戏页的按钮组件一律是胶囊,首屏的主要行动"开始游戏"也是(实测(云游戏页))。这是那一页自己的选择,上表的语义不变:胶囊在这里仍然说"对话、筛选、资源、短状态",本库的按钮不做胶囊——取的是同一页顶栏导航项的 4px 微圆角,见 按钮 与 云游戏页。

圆角#

官网首页实测:绝大多数元素圆角为 0;按钮、页签、标签这类小控件有 2 – 6px 的轻微倒角;头像与翻页钮是正圆;分页条、导航器与切换器是胶囊。云游戏页不同(实测(云游戏页)):顶栏的导航项和浏览器提示条 4px,浮层 8px,按钮组件是 60px 圆角的胶囊(分享浮层里那三颗白按钮是 2px);商城的面板 8px、商品卡 4px。库里的按钮一族照云游戏页顶栏的导航项取 4px,悬停时不变(实测 8.2)。

令牌 值 用途
rounded-none 0 默认。 面板、卡片、输入框、弹窗
rounded-xs 2px 小标签、播放钮、紧凑按钮
rounded-sm 4px 按钮一族(按钮、方形图标钮、主行动块、页头返回钮)、缩略图
rounded-md 6px 新闻卡片的图片
rounded-full 无限大 胶囊与正圆

没有 8px、12px、16px 这类"现代卡片圆角"。需要柔和感的地方直接用胶囊或圆,不要用中等圆角折中。云游戏页的浮层用 8px(实测(云游戏页)),账号 SDK 的卡片在 1440 宽时是 16px、1920 宽时 20px(实测(账号 SDK));这里不取。SDK 是鹰角各游戏共用的组件,不拿来放宽这一条,见 云游戏页。

微圆角(2 – 6px)的作用是消除像素级的生硬,肉眼几乎看不出是圆角。拿不准时用 0——组件库里的页签、轻提示就是这样取的:官网首页的这几样带 2 – 4px 的微圆角,库里是直角。按钮一族照云游戏页的顶栏取 4px,并且只有这一档:按钮、方形图标钮、主行动块并排时外形一致。

切角#

切角是把矩形的一个角沿 45° 切掉。它在游戏界面里很常见,在官网上几乎不出现。

令牌 值 适用的元素高度
--cut-sm 6px 标签、角标(≤ 28px)
--cut-md 10px 按钮、输入框(32 – 48px)
--cut-lg 16px 面板、大按钮(≥ 56px)

三档取值是推断(社区项目的取值在 10 – 14px 之间)。规则:

  • 切角尺寸跟元素大小走,约为高度的四分之一,不要全站统一一个值。
  • 一个元素只切一个角,通常是右上或右下;对角各切一个用于更强的"机械感",四角全切不用。
  • 只给行动、导航、权限类控件切角。正文卡片、聊天气泡、筛选项不切。

画法、焦点环的处理、斜楔的写法见 切角与斜楔。

线#

用途 粗细 颜色 来源
发丝分隔线 1px line 实测
控件之间的竖向分隔 2px line 实测(官网约 2.25px)
黄底或深底上的分隔线 2 – 3px signal-deep 或白 30% 实测
强调竖条(列表项、菜单当前项的左缘) 3 – 4px signal 实测(0.25 – 0.375rem)
按钮里图标和文字之间 1px 字色 30% 实测(云游戏页顶栏的导航项)
角括号、角钩 2px ink 或 ink-tertiary 推断
镂空字描边 1 – 1.5px ink 20% 社区

竖向分隔线不通顶。 官网页签之间的竖线高度约为容器的三分之二(2.5rem 对 3.75rem),上下留空。

强调竖条是最常用的"低成本强调":一条 3 – 4px 的黄色短竖线,放在列表项左缘,长度约为容器高度的一半。官网主站的通用按钮也把它放在文字左侧;库里的按钮照云游戏页,不带它(见 按钮)。

不围整圈边框#

默认不描边。 形状由底色的差、一条边线或一条左缘色条交代,不要四边围一圈 1px 的线把东西包起来——那是"卡片"的画法,而卡片在这套语言里用得很克制。一条页面内的消息、一闪而过的轻提示,都不该看起来像一个盒子。

整圈边框只在这几处成立,各有明确理由:

允许整圈边框的地方 理由
面板、下拉面板、气泡卡片、悬浮卡、弹窗、抽屉、展开条 浮在内容之上或围住一组信息,要和周围分开;配零偏移的环境阴影
输入框的 outline 变体 放进 surface-sunken 的区域后,要靠这一圈才看得出是可以填写的格子
填充反转的小标签、筛选胶囊、步骤条的节点 边框是"空心 / 选中的形状"本身,不是容器的外框
物品格、文件上传的投放区、空状态 格子或投放区要有边界;空状态的虚线框可以关掉
高对比模式下的补线 系统把底色换掉后,只能靠线成形

不满足上表的情况,用底色差 + 一条边线表达(提示条用左缘色条,轻提示用环境阴影)。不要为了"更清楚"给它补一圈线。

阴影#

官网首页的阴影全部是 0 0 <模糊> rgba(0,0,0,α)——没有 X、Y 偏移,像物体四周均匀的环境遮蔽,而不是从上方打光的投影。

令牌 值 用途 官网对应
shadow-xs 0 0 4px 黑 25% 按钮 通用按钮的 drop-shadow
shadow-sm 0 0 8px 黑 25% 小型浮层、翻页钮 0.5 – 0.625rem
shadow-md 0 0 12px 黑 30% 主要行动按钮、弹出面板 0.75rem 黑 40%
shadow-lg 0 0 24px 黑 30% 顶栏、弹窗 2rem 黑 30%
shadow-rail 0 0 12px 黑 10% 侧轨、常驻面板 1rem 黑 10%

规则:

  • 阴影用来把浮在内容之上的东西(按钮、浮层、导航)从背景上分出来,不用来做卡片的层次。卡片靠底色差和 1px 线。
  • 悬停时不加大阴影、不上浮。悬停用颜色变化与位移表达。
  • 辉光几乎不用。 官网首页全站只有两处黄色辉光和两处白色辉光。不要给选中态加发光描边。

云游戏页的浮层和提示条用的是向下偏的投影(实测(云游戏页)):分享浮层 0 4px 16px 黑 20%,用户中心下拉 0 4px 16px 黑 40%,浏览器提示条 0 6px 18px 黑 28%。商城的商品卡(0 0 12px 黑 25%)和"更多"的侧栏(0 0 16px 黑 20%)则是零偏移的;"更多"加载层的竖向进度条另带一圈 0 0 10px 的黄色辉光(品牌黄 45%)。本库仍全部零偏移,见 云游戏页。

选中与强调的形状语言#

选中不靠发光,靠以下几种手段(按使用频率):

手段 说明 例子
填充反转 底色变黄,或由浅变深、由深变浅 导航激活项变黄底;页签激活变灰底
边条 左缘或底边出现一条实色短条 列表选中项左缘黄条;分页的黄色刻度
角括号 四角各一个 L 形短线,框住选中物 物品格选中
选中环 圆形元素外加一圈实色环 头像选中的黄环
位移 文字或图标平移一小段,让出位置给箭头 页签激活时文字左移、箭头出现

见 括号与标记。

用法#

<!-- 默认:直角 -->
<div class="border border-line bg-surface-raised">面板</div>

<!-- 小标签:微圆角 -->
<span class="rounded-xs bg-control px-2 py-0.5 text-sm text-on-control">PV</span>

<!-- 胶囊导航器 -->
<div class="flex items-center gap-4 rounded-full bg-surface-inverse p-1.5 text-ink-inverse">…</div>

<!-- 圆形翻页钮:环境阴影 -->
<button class="size-12 rounded-full bg-surface-raised shadow-sm">‹</button>

<!-- 强调竖条 -->
<button class="relative bg-control pl-6 text-on-control">
  <span class="absolute left-3 top-1/4 h-1/2 w-[3px] bg-action"></span>
  更多情报
</button>

宜 / 忌#

宜

  • 先全部用直角搭出界面,再判断哪些地方需要换形状。
  • 让形状对比发生在不同语义之间:直角面板里放一排圆形头像。
  • 用底色差和 1px 线分层。

忌

  • 给卡片加 8 – 16px 圆角。
  • 给所有按钮切角,或给一个元素四角全切。
  • 用带偏移的投影(0 4px 12px)和悬停上浮。
  • 用发光描边表示选中或焦点。
  • 让锐角背景缩小了真实的点击区域。

来源#