Web
Interface
Guidelines

简介

Web Interface Guidelines

本文档翻译自 Web Interface Guideline,更新至 2023 年 6 月 6 日版本。


这份文档了总结一些构建一个良好(Web)界面的细节,但它不是完整和全面的。这是一份动态文档,根据经验定期更新。部分内容可能是主观的,但大部分网站依然适用。

本文档特意不重复提及 WAI-ARIA 规范的内容。但是会指出一些无障碍访问指南,欢迎贡献。编辑这个文件 并提交 Pull Request。

交互性

排版

动效

触摸

性能优化

无障碍访问

设计

Footnotes

  1. 在深色模式和浅色模式之间切换会触发元素上的过渡,这些过渡本来是为悬停等明确交互而设计的。我们可以临时禁用过渡来防止这种情况。对于 Next.js,使用 next-themes,它可以开箱即用地防止这个过渡。

  2. 这是一个品味问题,但有些交互在没有动效时感觉更好。例如,原生 macOS 右键菜单由于频繁使用,只有退出动画,没有进入动画。

  3. 大多数触摸设备在按下时会临时闪现悬停状态,除非明确只为指针设备定义 @media (hover: hover)

  4. 使用 will-change 作为提高性能的最后手段。预先在元素上使用它来获得更好的性能可能会产生相反的效果。

  5. 这可能有争议,但有时直接操作 DOM 是有益的。例如,不依赖 React 在每个滚轮事件上重新渲染,我们可以在 ref 中跟踪增量并在回调中直接更新相关元素。

  6. 禁用的按钮不会出现在 DOM 的 tab 顺序中,因此工具提示永远不会向键盘用户宣布,他们不会知道按钮为什么被禁用。

  7. 截至 2023 年,Safari 在定义自定义 outline 样式时不会考虑元素的边框圆角。Safari 16.4 已添加对 outline 跟随边框圆角曲线的支持。但是,请记住并非每个人都会立即更新他们的操作系统。