vibe coding
术语课 前端篇:图标
术语课

前端篇:图标

你让 AI 加个图标,它直接给你塞了个 emoji。你觉得不好看,它就继续换,但最后呈现出来的效果还是一股粗糙的塑料味。

一天一个 vibe coding 术语课,今天就讲讲图标。

一、什么是图标?

就拿一个你自己做的记账小应用来说。

底下一排四个入口:记一笔、账单、统计、我的。

每个字上面都有一个小符号。一支笔,一个本子,一张图表,一个人形。

再点开一条账单,右上角并排三个小符号,下面一个字都没有:一支笔,一个垃圾桶,一颗星。

这些小符号就叫图标,英文 icon。

它常见的用处有这么几种。

在导航里给用户指路,就是底下那一排,图标配着文字,让人一眼扫到自己要去哪儿。

在按钮上顶替文字,就是右上角那三个。那儿确实窄,塞不下「编辑」「删除」。把图标放进一块明确的点击区域里,既省地方,手指也更容易点准。

还有搜索框里那个放大镜、提示前面那个感叹号、账单每一行开头标出这笔是吃饭还是打车的小标记。

看着都是一个小符号。但它是怎么放到页面上的,常见的有四种做法。

你要是直接说放一个图标,AI 就会给你乱来,最直接也最常见的就是从表情包里给你挑一个。

二、同一个小符号,四种放上去的方式

先说普通界面图标里最推荐的一种。

它存的是一段「怎么画」的说明:从哪儿起笔,画多大的圆,中间拐几个弯。浏览器照着这段说明,当场画一个出来。

因为是现画的,放多大都不糊,而且颜色也能跟着文字颜色或者主题走。

这叫 SVG 图标,英文 svg icon。

第二种,是把几百个图标做成一套「字」。

页面显示那个房子的时候,其实是在显示这套字里的一个字符,跟显示一个「你」字是同一回事。

这叫字体图标,英文 icon font。

它跟 SVG 很像,放大同样不会糊,颜色也能跟着文字颜色或者主题走。

但是,字体图标有一个缺点。它得先加载一份图标字体。有的项目会直接接入整套图标字体。你只用十个图标,用户也会把整套几百个一起下载;这份字体还没加载完,那块地方可能先空着,也可能显示成方框。

第三种,直接放一张小图片。

这种就很容易懂了,就是用一张图片来表示。

这种图片由一格一格的小点组成,常见的就是 PNG。它叫位图图标,英文 raster icon。

尺寸一放大,这些小点也会一起被放大,边缘就容易发糊。想换颜色,通常要重新出图,或者额外做染色、蒙版处理;复杂彩色素材切成深色模式时,还可能要再备一套。

所以拿它做普通界面图标,一般不推荐。

只有遇到必须保留复杂颜色、渐变或者纹理的现成素材,比如某些品牌 logo,才考虑用小图片。

第四种,就是 emoji。它本来是聊天、评论和备注里表达内容的表情字符,不是项目里的一套界面图标。

拿 emoji 顶替导航、按钮和状态提示里的图标,直接就是错误用法。

它和字体图标最容易混,是因为两者在页面里都像一个字符。字体图标来自项目里装好的那套特殊字体;emoji 通常来自设备自带的表情字体,换台设备就会换成那套系统自己的画法。

AI 最容易混的就是这两个。你说「加个热门图标,用火苗」,它会直接给你一个火苗表情。

三、emoji 顶替导航、按钮和状态提示,会出四件事

在你自己电脑上看,那个火苗表情可能挺正常。换到别人的设备,问题才容易冒出来。

第一,各家系统各画各的。同一个火苗 emoji,苹果画一套,Google 的安卓画一套,Windows 又是一套。用户换台设备打开,那个火苗就会换个样子,有时候连感觉都变了味。你的界面长什么样,就不由你说了算。

第二,这类彩色 emoji 自带颜色,不跟你的主题走。你定了一套主色,界面上却杵着几个原色的表情。做深色模式的时候最明显:按主题配好的 SVG 或字体图标能跟着切换,彩色 emoji 不会自动跟着主题色变。

第三,大小和对齐更难统一。它跟着文字一起排版,不像同一套图标那样有统一的尺寸和边界。你当然能用行高和位置去调,但换个系统或者换个 emoji,可能又要重新调。

第四,直接把 emoji 塞进界面。要是没做额外处理,读屏软件会念出系统给它的名字。你在账单每一行前面放一个火苗表情,读屏软件可能会把每一行都先念成「火焰」。十行就是十遍,全是跟内容无关的话。

那 emoji 是不是就不能用了?

能用,但分地方。用户自己填的评论、备注、昵称和资料里,想打几个表情都正常,那是内容。你自己搭的这套界面,导航、按钮、状态提示,不要用它。

四、描边还是实心,是同一套图标的两个样子

再回到底下那一排。

你现在停在「账单」上,它上面那个图标是整块填满的,颜色也比旁边深一点。

另外三个,记一笔、统计、我的,图标都是空心的,只有一圈线。

填满的这种叫实心图标,英文 filled。只有一圈轮廓线的叫描边图标,英文 outlined。

放在这种底部导航里,常见的分工就是你刚看到的这个样子:没选中的用描边,选中的那一项换成实心。

好处是不用只靠颜色,也不用额外加边框。图标本身一实一空,用户更容易看出自己停在哪儿。

要把这两个样子当成一对,前提是它们表示同一个功能,而且来自同一套图标。笔画粗细、圆角大小、整体比例都得对得上。

从两套图标里各挑一个凑成一对,用户说不出哪儿不对,但一眼就觉得这个界面是拼出来的。

这条不只管这一对。整个项目最好从头到尾都用同一套图标。你让 AI 加一个,它这次从这儿找一个,下次从那儿找一个,页面上线条粗的细的、方角圆角的混在一起,就是这么来的。

好在图标不用你自己画,也不用让 AI 现编。网上有不少免费开源的图标库,一套就是几百上千个,风格本来就是统一的,描边和实心也都配好了。

挑的时候看一件事:这套图标的长相,跟你项目现在的长相对不对得上。你的界面圆角大、线条细,就别挑方头方脑的粗线条;界面本身硬朗,配一套圆滚滚的图标也会别扭。图标的笔画粗细,也要跟页面上文字的粗细配得上。

挑定一套,就告诉 AI 以后都从这一套里取,缺哪个也在这套里找,别再自己造。

五、光有图标,用户不一定认得

再看账单详情右上角那三个。笔、垃圾桶、星,下面一个字都没有。

真正一看就懂、不用配字的图标其实极少。翻来覆去就那么几个:搜索的放大镜,回首页的房子,删除的垃圾桶。剩下的绝大多数,都得靠用户在这个产品里反复用,才慢慢记住。

你这三个里,正好只有垃圾桶在名单上。

另外两个都不在。一支笔,是编辑这条账单,还是再记一笔?一颗星,是收藏,还是标个重点?用户得停下来猜。

用得久的人是能记住的。可你这个应用刚上线,谁也没用过几回,那点熟悉是从哪儿来的?让用户先学会一个你新发明的符号,只会平白增加理解成本。

所以能配文字就配文字。底下那一排导航就是这么做的,图标和文字一起给。

文字还得一直看得见。别指望鼠标停上去弹个提示——手机上根本没有「停上去」这个动作,手指一碰就直接点下去了。

确实不配文字的时候,界面里至少要给按钮一个名字,让读屏软件能把它读出来。

不给会怎么样?用读屏的人点到那儿,可能只听见「按钮」两个字。他不知道按下去会发生什么。

反过来也有一种情况。旁边已经写着「记一笔」三个字了,那个图标就只是陪衬,这时候要专门把它对读屏藏起来。不然名字报一次、文字再念一次,用读屏的人每一项都要听两遍。

六、说得出是哪一种,AI 才不用替你猜

你在页面上看到的都是一个小符号。它背后可能是当场画出来的 SVG,可能是一套字里的一个字符,可能是一张小图片,也可能只是一个表情。

分清楚这四种,你跟 AI 提要求的时候就能说清楚。

普通界面图标优先用 SVG。

项目已经整套用了字体图标,可以继续沿用,但要接受它加载整份字体的代价。

位图只留给确实需要复杂颜色、渐变或者纹理的素材。

emoji 可以留在用户自己填写的内容里,不要拿它顶替导航、按钮和状态提示里的图标。

像底部导航这种要区分选中状态的地方,常见做法是没选中的用描边,选中的用实心。颜色跟着主题走。

只有图标、没有文字的那种按钮,什么时候能用、多大才按得准,按钮那一集专门讲过,想细看的可以翻回去。

该内容为@openbeetles原创内容,未经授权,禁止转载,违者必究!