npm 包 gumshoejs 使用教程

阅读时长 9 分钟读完

简介

gumshoejs 是一个 JavaScript 库,它提供了一种简单的方式来在页面上跟踪当前滚动到的位置。它可以用于创建自定义的滚动跟踪功能,比如在单页应用程序中跟踪当前导航菜单项、高亮当前阅读的章节等等。

安装

gumshoejs 是一个 npm 包,可以使用 npm 命令来安装。

使用

基础用法

使用 gumshoejs 最简单的方式就是在页面上添加一个具有相应属性的 HTML 元素。例如,以下代码会在页面上监听所有含有 data-gumshoe 的 a 元素:

使用以下 JavaScript 代码初始化 gumshoejs:

这个代码块指定了要监听的元素,其中 "#navbar a[data-gumshoe]" 是一个 CSS 选择器,用于选择具有 data-gumshoe 属性的 a 元素。通过这种方式,Gumshoe 会自动将每个滚动位置映射到页面上相应的元素。并且,在当前元素进入视图时,会自动 class 属性为 active。

指定选项

除了基础用法之外,gumshoejs 还提供了许多其他选项。以下是一些最常见的选项:

  • container: 监听滚动事件的容器。默认情况下,Gumshoe 监听 document 的滚动事件,但是可以通过这个选项来指定一个不同的容器。
  • navClass: 当前活动元素的 class。默认情况下,这个值为 active
  • offset: 距离屏幕顶部的偏移量。默认情况下,这个值为 0。
  • repeateDelay: 滚动时是否重复激活事件,默认值为 true。

以下代码展示了如何指定这些选项:

函数回调

gumshoejs 也提供了一种简单的方式来处理当前元素更改时的事件。可以通过将一个回调函数指定为 events 选项来实现:

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

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

这个代码块指定将事件处理的变量显示在控制台上。event.target 是当前活动元素的 DOM 元素。

示例代码

以下是一个完整的示例代码,使用 gumshoejs 来跟踪导航菜单的位置:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

gumshoejs 是一个非常实用的 JavaScript 库,可以轻松地创建自定义的滚动跟踪功能。该库容易使用且功能强大,可用于各种应用程序,并且可以搭配具有活动状态的导航菜单等使用。在实际项目中,gumshoejs 经常使用,建议前端工程师掌握这个库的使用。

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

纠错
反馈