使用 Material Design Lite 构建动态表格

阅读时长 10 分钟读完

在前端开发中,表格是非常常见的界面元素之一。如何构建一个美观、易用、动态的表格呢?Material Design Lite 是一个基于 Material Design 风格的库,提供了丰富的组件和样式,可以帮助我们构建漂亮的界面。

在本文中,我们将详细介绍如何使用 Material Design Lite 构建动态表格,包括基本的表格结构、交互、样式等方面。

基本结构

首先,让我们来看一下基本的表格结构。使用 Material Design Lite,我们可以通过一个简单的 HTML 结构来创建一个基本的表格:

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

如上所示,我们使用了 mdl-data-table 类来创建一个表格。thead 元素用于定义表格的列名,th 元素定义列的名称;tbody 元素用于定义表格的内容,tr 元素定义表格的行,td 元素定义单元格的内容。

需要注意的是,使用 Material Design Lite 的表格,需要将列名的第一个单元格定义为 mdl-data-table__cell--non-numeric 类,以避免默认的数学排序(如果列名被认为是数值的话,例如年龄)。

交互

在 Material Design Lite 中,表格可以很容易地添加交互功能,例如排序、筛选等。我们使用 JavaScript 来实现这些交互功能。

排序

Material Design Lite 为表格提供了排序功能,我们可以使用 getmdl-select 插件来实现。以下是使用该插件来实现排序的示例代码:

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

如上所示,我们使用 getmdl-select 类来创建一个下拉菜单,用于选择排序方式。点击菜单项后,使用 JavaScript 来动态更改表格的排序。

以下是使用 jQuery 实现的示例代码:

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

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

其中,compare 函数用于排序,$(this).data('sort-by')$(this).data('order') 分别用于获取排序的方式和顺序,$(a).find('td[data-sort-val="'+prop+'"]').data('sort-value') 用于获取具体的排序值。

筛选

除了排序,我们还可以为表格添加筛选功能。以下是使用 getmdl-select 插件来实现筛选的示例代码:

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

如上所示,我们使用 getmdl-select 类来创建一个下拉菜单,用于选择筛选方式和筛选值。点击菜单项后,使用 JavaScript 来动态更改表格的显示结果。

以下是使用 jQuery 实现的示例代码:

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

其中,$(this).data('filter-by')$(this).data('filter-value') 分别用于获取筛选的方式和值,$(this).closest('.mdl-data-table').find('tbody>tr') 用于获取所有的行,$(this).closest('.mdl-data-table').find('tbody>tr').hide().removeAttr('data-filtered') 用于隐藏所有的行,$rows.show().attr('data-filtered', true) 用于显示符合筛选条件的行,并添加 data-filtered 属性以便后续操作。

样式

除了基本的表格结构和交互,我们还可以通过 Material Design Lite 的样式来美化表格。例如,我们可以为表格添加斑马条纹样式、悬停效果、选中效果等。

以下是一些基本的样式示例代码:

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

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

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

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

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

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

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

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

如上所示,我们定义了基本的表格样式,包括表格的宽度、单元格的内边距、颜色、边框等。同时,我们为表格添加了斑马条纹、悬停效果、选中效果等。

总结

通过使用 Material Design Lite,我们可以很容易地构建出美观、易用、动态的表格。在本文中,我们介绍了如何构建基本的表格结构、添加交互功能、美化表

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

纠错
反馈