Material Design 中如何实现节点图及展开效果?

阅读时长 8 分钟读完

随着用户体验的重视,Material Design 成为了设计师和前端开发人员的首选界面设计语言。而节点图及其展开效果是 Material Design 中常见的交互方式之一,那么我们该如何实现它呢?

1. 节点图

1.1. 概述

节点图(也称为层次结构图或树形图)是一种以树状结构表示层次关系的图表,它是一种非常直观的可视化方式,能够清晰的展示出层级之间的关系。

1.2. 实现方式

1.2.1. HTML 结构

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

1.2.2. 样式

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

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

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

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

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

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

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

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

1.2.3. 效果

1.3. 优化

现在的节点图还没有实现节点的展开效果。如果所有节点都展开的话,页面会变得非常繁琐和难以维护,因此,我们可以把子节点隐藏起来,在点击父节点时再展示出来。

1.3.1. HTML 结构

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

1.3.2. 样式

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

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

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

1.3.3. JavaScript

1.3.4. 效果

2. 节点图展开效果

我们已经成功地实现了节点图,下面我们再来看一下展开效果。

2.1. 概述

节点图的展开效果主要有两种方式:水平展开和垂直展开。水平展开是指在水平方向上展开子节点,而垂直展开则是在垂直方向上展开子节点。

2.2. 实现方式

2.2.1. HTML 结构

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

2.2.2. 样式

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

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

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

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

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

2.2.3. JavaScript

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

2.2.4. 效果

2.2.4.1. 水平展开
-- -------------------- ---- -------
--- ----------- ------------
  ------------ --------
    ----
      ------------ ---------------
      ------------ ---------------
    -----
  -----
  ------------ -------------
-----
-- -------------------- ---- -------
---------------- -- -- -
  ---------- ----------- ---- ------------
  -------- -----
  ------------ -----
-

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

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

---------- ---------- -
  -- -
    -------- --
    ---------- --------------
  -
  ---- -
    -------- --
    ---------- ------------------
  -
-
2.2.4.2. 垂直展开
-- -------------------- ---- -------
--- ----------- ----------
  ------------ --------
    ----
      ------------ ---------------
      ------------ ---------------
    -----
  -----
  ------------ -------------
-----
-- -------------------- ---- -------
-------------- -- -- -
  ---------- ---------- ---- ------------
  -------- -----
  ------------ -----
-

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

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

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

结论

节点图及其展开效果是一个非常常见的交互方式,通过本文的介绍,我们已经可以清楚的知道如何实现这些效果了。在实际开发中,我们可以根据需要进行样式和 JavaScript 的优化,使页面更加美观和易于维护。希望本文对你有所帮助,谢谢阅读!

示例代码见: https://codepen.io/chrisgou/pen/rNmXWQx

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

纠错
反馈