原生js实现淘宝首页点击按钮缓慢回到顶部效果

实现淘宝首页点击按钮缓慢回到顶部效果可以采用原生Javascript,下面是具体的实现步骤:

1. 获取回到顶部按钮以及页面滚动条

首先,在页面中添加“回到顶部”按钮,然后使用JS代码获取该按钮以及页面滚动条的对象:

var scrollBtn = document.getElementById('scrollBtn');
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
var clientHeight = document.documentElement.clientHeight;

2. 给回到顶部按钮添加点击事件

给回到顶部按钮添加点击事件,点击时页面回到页面最上方:

scrollBtn.onclick = function() {
    document.documentElement.scrollTop = 0;
    document.body.scrollTop = 0;
}

3. 添加平滑滚动效果

为了达到缓慢回到页面顶部的效果,我们需要利用JS实现页面的平滑滚动。这里采用requestAnimationFrame方法来实现。在页面滚动期间,使用window.requestAnimationFrame()方法设置循环函数,来不断修改页面滚动值。具体代码如下:

scrollBtn.onclick = function(){
    var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    var clientHeight = document.documentElement.clientHeight;
    var perSpeed = Math.round(scrollTop / 10);
    function step() {
        scrollTop = scrollTop - perSpeed;
        if (scrollTop <= 0) {
            scrollTop = 0;
            window.scrollTo(0, scrollTop);
            return;
        }
        window.scrollTo(0, scrollTop);
        requestAnimationFrame(step);
    }
    requestAnimationFrame(step);
}

示例说明1

在以下代码中,点击按钮时,页面会缓慢回到页面最顶部。具体实现中,为了实现缓慢滚动效果,采用了requestAnimationFrame()方法,通过调整滚动值,不断地调用window.scrollTo()方法来实现平滑滚动效果。这里实现了同时兼容PC端和移动端。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>淘宝首页-点击按钮缓慢回到顶部</title>
  <style>
    #scrollBtn {
      display: none;
      position: fixed;
      bottom: 80px;
      right: 50px;
      width: 44px;
      height: 44px;
      background: #666 url('http://gtms04.alicdn.com/tps/i4/TB16s.NGXXXXXbhaXXXF8YH9XXX-99-122.png') no-repeat center center;
      cursor: pointer;
    }
    #scrollBtn:hover {
      background-color: #f40;
      -webkit-transition: background-color .2s ease-in;
      -moz-transition: background-color .2s ease-in;
      -o-transition: background-color .2s ease-in;
      transition: background-color .2s ease-in;
    }
  </style>
</head>
<body>
  <div style="height:1900px; background-color: #ddd;"></div>
  <div id="scrollBtn"></div>
  <script>
    //获取回到顶部按钮以及页面滚动条
    var scrollBtn = document.getElementById('scrollBtn');
    var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    var clientHeight = document.documentElement.clientHeight;

    //给按钮添加点击事件
    scrollBtn.onclick = function(){
      var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
      var clientHeight = document.documentElement.clientHeight;
      var perSpeed = Math.round(scrollTop / 10);

      //平滑滚动
      function step() {
        scrollTop = scrollTop - perSpeed;
        if (scrollTop <= 0) {
          scrollTop = 0;
          window.scrollTo(0, scrollTop);
          return;
        }
        window.scrollTo(0, scrollTop);
        requestAnimationFrame(step);
      }
      requestAnimationFrame(step);
    };

    //onscroll事件,判断按钮的显示与隐藏
    window.onscroll = function () {
      scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
      if (scrollTop > clientHeight) {
        scrollBtn.style.display = 'block';
      } else {
        scrollBtn.style.display = 'none';
      }
    };
  </script>
</body>
</html>

示例说明2

在以下代码中,点击按钮时,页面会缓慢回到页面最顶部。具体实现中,为了实现缓慢滚动效果,采用了requestAnimationFrame()方法,通过调整滚动值,不断地调用window.scrollTo()方法来实现平滑滚动效果。这里使用了window.onscroll事件,同时兼容了PC端和移动端。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>淘宝首页-点击按钮缓慢回到顶部</title>
  <style>
    #scrollBtn {
      display: none;
      position: fixed;
      bottom: 80px;
      right: 50px;
      width: 44px;
      height: 44px;
      background: #666 url('http://gtms04.alicdn.com/tps/i4/TB16s.NGXXXXXbhaXXXF8YH9XXX-99-122.png') no-repeat center center;
      cursor: pointer;
    }
    #scrollBtn:hover {
      background-color: #f40;
      -webkit-transition: background-color .2s ease-in;
      -moz-transition: background-color .2s ease-in;
      -o-transition: background-color .2s ease-in;
      transition: background-color .2s ease-in;
    }
  </style>
</head>
<body>
  <div style="height:1900px; background-color: #ddd;"></div>
  <div id="scrollBtn"></div>
  <script>
    //获取回到顶部按钮以及页面滚动条
    var scrollBtn = document.getElementById('scrollBtn');
    var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    var clientHeight = document.documentElement.clientHeight;

    //给按钮添加点击事件
    scrollBtn.onclick = function(){
      var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
      var clientHeight = document.documentElement.clientHeight;
      var perSpeed = Math.round(scrollTop / 10);

      //平滑滚动
      function step() {
        scrollTop = scrollTop - perSpeed;
        if (scrollTop <= 0) {
          scrollTop = 0;
          window.scrollTo(0, scrollTop);
          return;
        }
        window.scrollTo(0, scrollTop);
        requestAnimationFrame(step);
      }
      requestAnimationFrame(step);
    };

    //onscroll事件,判断按钮的显示与隐藏
    window.onscroll = function () {
      scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
      if (scrollTop > clientHeight) {
        scrollBtn.style.display = 'block';
      } else {
        scrollBtn.style.display = 'none';
      }
    };
  </script>
</body>
</html>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生js实现淘宝首页点击按钮缓慢回到顶部效果 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript实现表单验证示例

    下面是针对“JavaScript实现表单验证示例”的完整攻略: 1. 表单验证的基本思路 前端表单验证的基本思路是,当用户提交表单时,先阻止表单的默认提交行为,然后通过JavaScript对表单进行内容的检测和验证,如果发现问题,则提示用户并阻止表单的提交。否则,允许表单进行提交操作。 通常,表单验证的实现流程如下: 针对表单的提交事件进行监听; 在提交事件…

    JavaScript 2023年6月10日
    00
  • js以对象为索引的关联数组

    “以对象为索引的关联数组”在JavaScript中被称为“对象”,也是一种常见的数据结构。从表面上看,它与其他编程语言中的字典或散列表/哈希表类似,但实际上更加灵活和强大。 基本概念 JavaScript中的对象是一组键/值对,其中键是字符串(或符号)类型,而值可以是任何数据类型(包括另一个对象)。对象中的键是唯一的,且不允许重复,但同一个对象的多个键可以指…

    JavaScript 2023年6月10日
    00
  • Javascript中的var_dump函数实现代码

    对于Javascript而言,并没有var_dump这个函数。通常情况下,我们可以使用console.log来输出变量的值和类型。 如果想要模拟PHP的var_dump函数,可以参照以下代码: function var_dump(obj) { var result = ”; for (var i in obj) { result += i + ‘: ‘ +…

    JavaScript 2023年6月11日
    00
  • IP查询系统的异步回调案例

    IP查询系统的异步回调案例可以分为以下几个步骤: 1.向第三方IP查询系统发出请求,获取IP信息。 2.解析获取到的IP信息,提取需要的数据。 3.对提取到的数据进行存储和处理。 4.将处理完成后的数据通过异步回调的方式返回给用户。 以下是详细的攻略: 第一步:请求IP信息 在代码中,这一步可以使用HTTP请求库向第三方IP查询系统发起GET请求,获取用户输…

    JavaScript 2023年5月28日
    00
  • JavaScript实现网页计算器功能

    JavaScript是现代网页开发中不可或缺的语言,可以用来实现网页计算器功能。以下是实现网页计算器功能的完整攻略,包含两条示例说明: 1. 创建网页结构 在HTML页面中创建一个计算器界面。可以使用<div>元素来包含计算器所有内容。 在这个<div>元素中,可以创建多个<button>元素,每个<button&g…

    JavaScript 2023年6月11日
    00
  • 简单聊聊JavaScript中的事件循环

    我们来谈谈JavaScript中的事件循环(Event Loop)。 什么是事件循环? 事件循环是JavaScript的一个重要的运行机制,它使得浏览器的JavaScript引擎具备操作系统调度器的功能。它不断地从任务队列中取出任务执行,直到任务队列为空。 JavaScript的事件循环是一个持续进行的过程,所以它被称为循环。而任务的来源有两种,一种是来自于…

    JavaScript 2023年5月27日
    00
  • 改变状态栏文字的js代码

    要通过JS代码来改变网页的状态栏文字,可以使用document.title属性。这个属性可以读取和设置当前网页的标题,同时一些浏览器也会将其作为状态栏文字显示。 下面是两个针对页面不同状态,使用JS代码改变状态栏文字的例子。 例子1:在鼠标hover链接时,将链接地址作为状态栏文字显示 在这个例子中,我们可以利用JS来改变链接的状态栏文字。当用户将鼠标指向链…

    JavaScript 2023年6月11日
    00
  • html5+canvas实现支持触屏的签名插件教程

    下面我将详细讲解“html5+canvas实现支持触屏的签名插件教程”的完整攻略,过程中包含以下几个步骤: HTML5+Canvas基础知识 实现鼠标支持的签名插件 实现触屏支持的签名插件 HTML5+Canvas基础知识 在使用HTML5+Canvas实现签名插件之前,你需要了解一些HTML5+Canvas的基础知识: 常用方法 var canvas = …

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部