Material Design 中的 Navigation Drawer 的使用及优化

阅读时长 14 分钟读完

Navigation Drawer 是 Material Design 中常见的一种侧边栏导航,在网页或移动端应用中使用广泛。它可以提供一个优雅的交互方式来浏览应用程序的主要功能,并具有优秀的用户体验。

本文将介绍 Navigation Drawer 的使用方法、优化技巧以及相关示例代码,帮助前端开发者更好地设计和开发 Navigation Drawer。

基本用法

Navigation Drawer 可以作为应用程序的主要导航方式,也可以作为与应用程序内容相关的补充导航选项。下面是 Navigation Drawer 的基本用法:

HTML 结构

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

---- --- ---
---- ---------------
  -----
    ----
      ------ ---------------------
      ------ ---------------------
      ------ ---------------------
    -----
  ------
------
展开代码

CSS 样式

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

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

-- ---- --
------- --- -
  -------- ----
  ----------------- -----
  ------------- --- ----- -----
-
展开代码

JavaScript 交互

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

-- -----
----------------------------------------------------------- ---------- -
  ------------------------------
---
展开代码

用上述代码,即可实现一个基本的 Navigation Drawer。在点击 app-bar 中的按钮时,会打开侧边栏(drawer),再次点击侧边栏即可关闭。

优化技巧

响应式设计

Navigation Drawer 在移动设备上比在桌面端更常见使用,在应用程序的响应式设计中,需要考虑各种设备的屏幕大小和方向。可以使用媒体查询(media query)或 Flexbox 等技术来实现响应式设计,以便在各种屏幕上都具有良好的布局和适当的交互方式。

手指触摸滑动

移动设备的用户需要在线或离线使用手指操作 Navigation Drawer,以便在侧边栏和主要内容之间切换。在这种情况下,可以使用 touch 事件来捕捉并响应触摸事件。如下所示:

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

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

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

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

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

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

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

--------------------------------------- ----------------- -------
-------------------------------------- ---------------- -------
展开代码

滚动问题

当 Navigation Drawer 中的内容比屏幕高时,侧边栏可能需要滚动来显示所有内容。在这种情况下,为了提高用户的交互体验,可以在滚动时隐藏 app-bar,并保持侧边栏始终可见。可以使用 CSS 或 JavaScript 来实现:

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

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

-- --------- --
------- -
  --------- ------
  ---- --
  ------- --
  ----- --
  -------- ----
  ----------- -----
  --------------------------- ------
  ------------ ----------
-
展开代码
-- -------------------- ---- -------
-- ------ -------
--- --------- - --
--- --------------- - ----
--- ------ - -----------------------------------
--------------------------------- -----------
  -- --------------- - -- -
    --- ----- - -------------------------------
    -- ------ -- -- -
      -- ---------- - -- -
        -----------------------------
      -
    -
    ---- -
      -- ---------- -- -- -
        --------------------------------
      -
    -
    --------- - ------
  -
  ---- -
    --------------------------------
  -
---
展开代码

示例代码

下面是一个完整的 Navigation Drawer 示例,包括 HTML、CSS 和 JavaScript:

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

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

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

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

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

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

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

-------

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

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

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

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

    -- ------ -------
    --- --------- - --
    --- --------------- - ----
    --- ------ - -----------------------------------
    --------------------------------- -----------
      -- --------------- - -- -
        --- ----- - -------------------------------
        -- ------ -- -- -
          -- ---------- - -- -
            -----------------------------
          -
        -
        ---- -
          -- ---------- -- -- -
            --------------------------------
          -
        -
        --------- - ------
      -
      ---- -
        --------------------------------
      -
    ---
  ---------
-------
-------
展开代码

结论

在网页和移动应用程序中,Navigation Drawer 是一种常用的导航方式,通过本文介绍的基本用法和优化技巧,开发者可以创建更优雅、易用和流畅的 Navigation Drawer,从而提高用户的体验和满意度。

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

纠错
反馈

纠错反馈