在设计图标组件时,你是否遇到过类似的问题?来看这两个组件,有什么不对劲的地方?
两个浅蓝色组件,内含图标和一个文本字符串 “标签”。左边的组件有一个水平的 3 点图标,右边的组件有一个垂直的 3 点图标。实际上,这里至少有两个问题:
前两个组件的视觉效果,黄色注释指向推文中描述的问题在创建包含图标的组件时,通常的流程是:
该视图显示了将图标嵌套到另一个组件中的过程。它还显示了对图标的两个重写,一个显示原始的水平三点图标,另一个显示垂直三点图标。
从“保持一致性”的角度来看,边界框是有意义的,但在实践中,它可能会给系统化设计带来额外的复杂性。例如,在系统中可以完美设置的 24×24 图标网格,到了最终设计文件中,却会出现像素对齐的问题。
一组黑色背景的图标。图标展示了两次,一次是普通图标,另一次是红色背景和边框图标。之前使用过的 “更垂直 ”图标有一个黄色箭头指向边界框空间,并标有 “毛 ”字。当边界框过大时,我们不得不创建额外的空间覆盖。这是光学设计的必然结果,但对于设计系统的管理者来说,“左填充 8,右填充 16” 这样看似随意的数值要求,往往会带来困惑。
问题图标在边界框内的情况与解决方案(在组件内的图标周围创建自定义填充)的比较。
高度是一个值得关注的因素。一种观点认为,基于高度的边界框可以确保一致的触摸区域,以提升无障碍性。这一点仍然存在争议,因为触摸区域不仅取决于高度,还受宽度影响。
另一方面,从水平尺寸的角度来看,图标通常是嵌套的,比如嵌套在带有固定宽度的图标按钮中。这意味着,图标的大小应当由系统中固有的宽度决定,而不是受固定的 X 规则约束。
这样的方式可以减少像素覆盖的问题,并确保图标在实例化时能“正常工作”,带来更强的可扩展性。
显示建议的布局–水平边界框设置为图标的宽度,而不是一致的宽度。这意味着水平和垂直三点图标的实例都能在原始组件中找到,而无需手动调整间距。
在设计系统中为图标设置固定尺寸,类似于在缺乏上下文的情况下做出未来决策。那么,图标的大小应该由图标按钮决定,还是在实例级别继承设定?
如果我们需要固定尺寸,比如在图标按钮的情况下怎么办?通常,按钮组件会被设置为固定(或最小)尺寸,以满足无障碍设计的要求。
在这种情况下,我们是否也需要为图标设定固定大小?还是说,大小应该由其外部的包裹按钮元素决定?
横向显示两幅插图的注释。左图在 Figma 中选择了一个图标按钮组件,自动布局中的宽度和高度设置用红色箭头标出,显示它们被设置为 “环抱内容”。右图显示的是 Figma 中的大纲模式,图标按钮内选择了图标本身。高度和宽度设置上有一个红圈,表明它们被设置为固定大小。
为了确保光学尺寸的稳定性,我们可以在 HTML 中使用 div,或在 Figma 中使用 frame 来包裹图标,并手动调整其垂直或水平位置。
在图标列表中,这一点尤为重要。例如,在垂直列表中,我们通常希望所有图标都具有相同的宽度,而不考虑其具体的光学视觉效果。在这种情况下,包装容器可以充当一个“安全网”,确保图标在不同场景下依然保持一致性。
在设计系统中,图标的边界框、尺寸继承、以及无障碍性都是需要权衡的关键因素。理解这些问题,并在合适的场景中采取适当的策略,能帮助我们打造更加一致且灵活的设计系统。