原生js实现返回顶部缓冲效果

阅读时长 4 分钟读完

在网页中,有时候需要用户向下滚动页面浏览长内容。但是当页面滚动的很远时,需要用户向上滚回到页面顶部。为了方便用户,我们可以添加一个“返回顶部”按钮。而且如果能够给这个按钮添加缓冲效果,用户体验会更好。本文将介绍如何使用原生JS实现该功能。

实现步骤

  1. HTML结构

首先,在HTML页面上添加一个返回顶部按钮。例如:

  1. CSS样式

为了让返回顶部按钮始终停留在页面右下角,并且在不同屏幕尺寸下都能正常显示,我们需要用CSS来设置其样式。例如:

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

其中,display属性设置为none表示初始状态下不显示,position属性设置为fixed表示固定在页面上,bottom和right属性设置为20px表示距离底部和右侧各20像素。其他属性用于美化按钮。

  1. JS实现

接下来,我们使用JS为按钮添加点击事件,并实现回到页面顶部的效果。代码如下:

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

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

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

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

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

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

代码分为三个部分:

  • 获取返回顶部按钮
  • 添加点击事件
  • 实现缓冲效果的动画函数

动画函数实现的缓冲效果是通过不断修改scrollTop值来实现的。其中,计算每一帧需要滚动的距离和时间间隔的公式比较重要,可以根据需求自行调整。

  1. 完整代码

HTML代码:

CSS代码:

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

JS代码:

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

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

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

- ---------------------------------------------------------- --------
--------------------------------------------------------------------------------
纠错
反馈