我决定通过添加和删除 CSS 类来实现几乎所有的 UI,并使用 CSS 过渡 来动画化过渡。
网站上大量的 JavaScript(那些不是完全用 JavaScript 构建的)都是“点击该元素,切换该类”——这就是 jQuery 如此受欢迎以及 Alpine.js 吸引众多开发者喜爱的的原因。
我曾经做过一个名为 “嘿,设计师,如果你只了解 JavaScript 中的一件事,我推荐这个” 的视频教程,其内容基本上是:学习切换类。从那以后
有时,为了开始学习庞大而复杂的知识,你需要先学习一些小而简单的东西。JavaScript 庞大而复杂,但你可以通过学习小而简单的事情逐步掌握它。如果你是一名网页设计师,我认为你可以学习一项特别有力的东西。
我想要你学习的是: 点击某个元素时,更改另一个元素的类。
好主意,但在你的示例中,你使用类来设置语义(“已完成”)。
这种将 UI 状态放入类的方式对于使用键盘导航的人来说并不奏效(因为类更改 - 大多数情况下 - 仅由鼠标点击或触摸敏感屏幕触发),并且对于像 NVDA(非视觉显示助手)这样的屏幕阅读器来说毫无意义。
由于这种 UI 行为隐藏在显示中,大多数可访问性检查工具将无法检测到它是一个可访问性障碍。
尽管存在缺陷和内部复杂性,但我认为 Web 组件是存储 UI 语义的最佳方式。