Material Design 中实现折叠式 NavigationDrawer

阅读时长 9 分钟读完

在 Material Design 中,NavigationDrawer 是一个非常重要的组件,它允许用户在应用程序中导航到不同的区域。为了更好地适应不同大小的屏幕,Google 在 Material Design 2.0 中引入了折叠式 NavigationDrawer,它在大屏幕上以常规抽屉样式显示,而在小屏幕上则会折叠成一个浮动操作按钮菜单。

在本文中,我们将讨论如何使用 Material Design 中的一些组件和 JavaScript 图像库来实现这种折叠式 NavigationDrawer。

效果演示

在开始之前,让我们先看一下最终实现的效果。

使用 Material Design 组件创建 NavigationDrawer

首先,我们需要使用 Material Design 组件来创建 NavigationDrawer。我们可以使用 material-components-web 库中的 drawer 组件来实现这一点。

-- -------------------- ---- -------
---- ------ ---
------ ----------------- -------------------------
  ---- ----------------------------
    ---- -----------------
      -- --------------------- ---------
        ----- -------------------------------- --------
      ----
      -- --------------------- ---------
        ----- -------------------------------- --------
      ----
      -- --------------------- ---------
        ----- -------------------------------- --------
      ----
    ------
  ------
--------

---- ------ ------- ---
---- -------------------------------
  ------- ------------------------
    ---- -----------------------------
      -------- ------------------------------- ---------------------------------------
        ------- --------------------- -------------------------------- ------------------------------
        ----- ---------------------------------- ------------
      ----------
    ------
  ---------
  ----- --------------------------------------
    ---- ------- ---- ---- ---
  -------
------

在上面的代码中,我们创建了一个 aside 元素,并将其包含在一个 mdc-drawer 类中。 这使得我们可以使用 mdc-drawer--dismissible 类将侧栏抽屉变成可滑动的。

然后,我们在抽屉里添加了一些导航链接,这些链接将在单击时导航到不同的页面。 接下来,我们创建了一个 div 元素,将它包含在 mdc-drawer-app-content 类中,并在这个 div 元素内放置了一个 header、一个 main 和一个 footer。

实现折叠式 NavigationDrawer

现在,我们来看看如何将我们的抽屉转换为折叠式抽屉。为此,我们需要借用 Material Components Web 库中的 Top App Bar 组件。

首先,我们需要添加 Top App Bar 组件到 mdc-drawer-app-content 中。该组件应该包含一个导航图标按钮和应用程序标题。 我们可以使用 Material Icons 字体来显示导航按钮。

-- -------------------- ---- -------
---- --- --- --- ---
------- ------------------------
  ---- -----------------------------
    -------- ------------------------------- ---------------------------------------
      ------- --------------------- -------------------------------- ------------------------------
      ----- ---------------------------------- ------------
    ----------
  ------
---------

接下来,我们需要编写一些 JavaScript 代码来处理点击导航图标按钮的事件,并展开或折叠 NavigationDrawer。

上述代码首先从 DOM 中获取 mdc-drawer 成分,然后获取 mdc-top-app-bar 中导航图标按钮。 然后,当用户单击导航图标按钮时,我们切换 mdc-drawer 成分的 mdc-drawer--open 类以实现折叠式 NavigationDrawer 的展开和折叠。

实现自适应 NavigationDrawer

我们还需要确保我们的 NavigationDrawer 能够自适应各种屏幕大小和方向。为此,我们可以使用 MDI(Material Design Icons)图像库,使我们的浮动操作按钮菜单看起来像一个浮动按钮,而不是缩小的抽屉。

首先,我们需要在我们的 HTML 中添加 MDI 的 CSS 样式文件:

然后,我们可以使用 MDI 中的材料设计类来创建一个浮动操作按钮菜单:

-- -------------------- ---- -------
---- -------- ------ ------ ---- ---
---- ------------------------
  -- -------------- ----------------- ------------------------ ----------------- ---------
    ----- -------------------- --------------------------
    ----- -------------------------- -----------
  ----
  ---- --------------- ---------------- ----------------------
    --- ---------------- ----------- ------------------ ----------------------------
      --- --------------------- --------------- ------------------- ------
      --- --------------------- --------------- ------------------- ------
      --- --------------------- --------------- ------------------- ------
    -----
  ------
------

请注意,我们在浮动操作按钮菜单中使用了两个 div 元素:一个包含 mdc-fab-wrapper 类,一个包含 mdc-fab mdc-fab--extended mdc-fab--shape--extended mdc-fab--primary 类。这使得我们的浮动操作按钮菜单看起来更像一个浮动按钮。

在上述代码中,我们添加了一个 nav 元素,将其包含在 mdc-menu mdc-menu-surface mdc-menu--quick-open 类中,以便在悬停菜单中添加一些选项。

接下来,我们需要在 JavaScript 中处理点击浮动按钮事件,并打开/关闭 MDI 菜单。

上述代码中,我们从 DOM 中获取 mdc-fabmdc-menu 元素,并添加一个事件监听器来处理单击事件。在单击事件中,我们切换 mdc-menu 元素的 open 属性以打开或关闭浮动操作按钮菜单。

结论

在本文中,我们讨论了如何使用 Material Design 中的一些组件和 JavaScript 图像库来创建一个折叠式 NavigationDrawer。我们首先讨论了如何使用 Material Design 组件创建 NavigationDrawer,并在此基础上实现了折叠式 NavigationDrawer。接下来,我们使用 MDI 图像库创建了一个浮动操作按钮菜单,并在响应单击事件时打开/关闭菜单。

希望这篇文章能帮助你了解如何使用 Material Design 和 JavaScript 实现折叠式 NavigationDrawer。如果你有任何疑问或建议,欢迎在评论中与我们分享。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6705ccc5d91dce0dc855051c

纠错
反馈