#054: 点击显示移动导航

我们已经为响应式设计打下了良好的基础。在最小的屏幕尺寸下,菜单会分解成 2×4 的网格。它在屏幕上非常适合,但在品牌标识和菜单之间,占据了大量的空间。我们在 iOS 模拟器上打开它,发现某些情况下根本看不到任何实际内容。

我们查看了一些关于如何处理导航模式的资源,例如 Brad Frost 的文章 响应式导航模式 和 Jason Weaver 的 侧边栏。我们还查看了 MDN 上的一个很酷的演示,叫做 Paperfold.

我们添加了一个额外的导航链接,最终称为“导航和搜索”,它将充当点击时显示移动导航的按钮。通过媒体查询断点,我们根据需要隐藏和显示此按钮。

我们主要使用 JavaScript 来切换导航。这有点冒险,因为它会疏远那些在 JavaScript 禁用的小屏幕用户——但我只是这样做了。这个数字很小(比没有 JavaScript 的桌面用户少,当然小于 1%),所以我会做个混蛋,继续这样做。

我们实际上只是用 JavaScript 切换了一个类名。我认为这是一种状态驱动 CSS 开发。所有关于显示内容、时间和方式的控制都由 CSS 处理。JavaScript 只是设置了一个类来声明当前状态。

我们花了很多时间调整添加“纸张折叠”CSS,使其正常工作,然后将搜索放在通过一些填充创建的、位于主要内容之上的间隙中。

最终,尺寸和位置进行了调整,使其更适合,并添加了一个小的关闭按钮。我一直在纠结是否要为像这样切换状态提供 UI。一方面,现在用户已经显示了导航,他们为什么还需要关闭它?他们已经看到了。如果他们不想使用它,他们可以简单地将其滑过。另一方面,当我无法在其他应用程序中切换此类状态时(出于某种原因),我发现它有点令人讨厌,所以我很想提供一个机制来执行此操作。