𝗜 𝗥𝗲𝗯𝘂𝗶𝗹𝘁 𝗡𝗼𝘁𝗶𝗼𝗻'𝘀 𝗦𝗹𝗮𝘀𝗵 𝗠𝗲𝗻𝘂 𝗶𝗻 𝟳𝟬 𝗟𝗶𝗻𝗲𝘀 𝗼𝗳 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁

Notion 用起来就像魔法一样。你输入一个斜杠,菜单就会出现;你选择一个选项,文本就会随之变换。

我用 70 行原生 JavaScript 重构了这个功能。所谓的“魔法”,其实是简单的逻辑。

我的 DesignFromZero 系列的第 9 天专注于著名的 UI。我从零开始重构这些工具,以深入理解它们。

其逻辑主要由三个部分组成:

代码在导航方面使用了一个简单的小技巧。通过使用取模运算符(modulo operator),你可以使用方向键在列表中移动。当选择到达底部时,它会自动循环回到顶部。

当你按下 Enter 键时,代码会执行两个任务:

  1. 更新数据中的块类型。随后由 CSS 处理视觉上的变化。
  2. 清除斜杠和命令文本。

复杂的功能往往有着简单的基础。斜杠菜单本质上就是数据加上前缀检查和类型切换。

在这里尝试在线演示:https://dev48v.infy.uk/design/day9-notion-slash.html

在这里阅读完整解析:https://dev.to/dev48v/i-rebuilt-notions-slash-menu-in-70-lines-of-javascript-2n9i