Material Design 中滑动抽屉菜单的实现方法

阅读时长 10 分钟读完

随着 Material Design 的逐渐普及,滑动抽屉菜单成为了移动端界面设计中必不可少的一部分。那么在前端领域如何实现 Material Design 中的滑动抽屉菜单呢?本文将详细讲解实现方法,并提供相应的示例代码。

Material Design 中的滑动抽屉菜单

在 Material Design 中,滑动抽屉菜单通常被用来作为页面顶部导航的扩展,也可以为用户提供一些不常用的、但仍然需要的操作选项。

滑动抽屉菜单的特点是,菜单从屏幕左侧滑动进入,遮挡住了部分页面内容,同时在滑动菜单上方出现一层半透明的遮罩,使得菜单看起来更加突出。

实现方法

HTML 结构

我们需要先在 HTML 中定义滑动抽屉菜单的结构,这里假设我们的菜单有两个选项:Home 和 About。

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

上面的 HTML 结构中,.slide-menu 即为整个菜单的容器。.menu-header 是菜单的头部,包括一个标题和一个关闭菜单的按钮。.menu-list 则是菜单的选项列表。

CSS 样式

接下来我们需要定义菜单的样式。为了实现滑动效果,我们需要用到 CSS 中的 transform 属性。下面是菜单的基本样式:

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

上面的 CSS 代码中,我们设置了 .slide-menupositionfixed,并将其放置在屏幕左侧(left: -300px)。.slide-menu 的宽度为300px,高度为100%。我们还为其设置了一个阴影,并且使用 transform 属性将其移动到屏幕左侧(transform: translateX(-100%))。同时,我们还为其绑定了一个 transform 过渡动画(transition: transform 0.3s ease-in-out)。

为了隐藏菜单,我们可以在需要的时候使用 Javascript 将其 transform 属性设置为 translateX(-100%)(移动到屏幕左侧),而在显示菜单时则将其设置为 translateX(0%)(恢复原位)。

我们还需要为菜单头部和选项列表添加样式:

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

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

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

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

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

我们使用flex布局,让菜单头部的标题和关闭菜单的按钮排列在一起。同时,我们使用了 background-color 把菜单头部的背景色改成了 Material Design 的默认蓝色。

Javascript 代码

最后,我们需要使用 Javascript 来控制菜单的显示和隐藏。为了实现滑动效果,我们需要在显示菜单时将其 transform 属性设置为 translateX(0%),在隐藏菜单时将其设置为 translateX(-100%)

下面是完整的Javascript代码:

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

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

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

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

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

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

我们首先使用 querySelector() 方法获取到菜单容器 .slide-menu、菜单按钮 .toggle-menu-btn 和关闭菜单按钮 .close-menu-btn,然后分别为它们绑定了点击事件。当菜单按钮被点击时,我们调用 showMenu() 函数来显示菜单。当关闭菜单按钮被点击时,我们调用 hideMenu() 函数来隐藏菜单。为了让用户可以通过点击遮罩关闭菜单,我们还为菜单容器绑定了一个点击事件,并在事件处理函数中判断了事件的目标元素是否为菜单容器本身。如果是,则说明用户点击了遮罩,我们就调用 hideMenu() 函数来关闭菜单。

示例代码

最后,我们来看一下完整的示例代码:

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

通过本文的讲解,我们学习了如何在前端中实现 Material Design 中的滑动抽屉菜单。我们首先使用 HTML 定义了菜单的结构和内容,然后使用 CSS 定义了菜单的样式,最后使用 Javascript 控制菜单的显示和隐藏。希望本文能够对大家有所帮助。

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

纠错
反馈