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

yizhihongxing

实现淘宝首页点击按钮缓慢回到顶部效果可以采用原生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日

相关文章

  • JS操作字符串转换为数值并取整的代码

    当需要将JavaScript字符串转换为数值并取整时,可以使用以下方法: let stringNum = "123.45"; let intNum = parseInt(stringNum); 这里将介绍一些该代码中使用的知识点。 首先,parseInt()函数把前面的字符串参数解析成整数。如果字符串开始的字符无法被转换为数字,则该函数会…

    JavaScript 2023年5月28日
    00
  • JavaScript中更安全的URL读写方法总结

    JavaScript中更安全的URL读写方法总结 URL是Web中不可或缺的部分。在JavaScript中,我们需要处理一个或多个URL,例如从URL中获取参数值、进行跳转等。然而,URL操作过程中安全性问题也非常重要。以下是一些更安全的URL读写方法。 URL编码/解码 当我们想在URL中传递一些数据时,可能会遇到不安全的字符,例如空格、#、&等。…

    JavaScript 2023年5月19日
    00
  • javascript与css3动画结合使用小结

    为了让大家更好地理解“javascript与css3动画结合使用小结”,我将详细阐述攻略的步骤和示例说明。 攻略步骤 步骤1:制定动画效果计划 在使用JavaScript和CSS3组合制作动画效果之前,您需要先确认您所需要的动画效果,比如运动的方向、速度、倍率等等。 步骤2:编写CSS3动画样式 接下来,根据您计划好的动画效果,您需要编写相应的CSS3动画样…

    JavaScript 2023年6月10日
    00
  • 你必须了解的JavaScript中的属性描述对象详解(上)

    我将为您详细讲解“你必须了解的JavaScript中的属性描述对象详解(上)”的完整攻略。 简介 JavaScript中的属性描述对象是一个非常重要的概念。它可以用来描述一个对象的属性,包括属性名、属性值、属性的类型,是否可读写等等。在JavaScript中,每个对象的属性都有与之对应的属性描述对象,而这个属性描述对象就是Object.getOwnPrope…

    JavaScript 2023年5月27日
    00
  • javascript 数组的方法集合

    “JavaScript 数组的方法集合”指的是 JavaScript 中常用的数组方法的总称。下面将详细介绍常见的数组方法及其用法。 1. push() push() 方法将一个元素添加到数组末尾,并返回添加后数组的长度。 let arr = [‘apple’, ‘banana’, ‘orange’]; let len = arr.push(‘pear’);…

    JavaScript 2023年5月27日
    00
  • JavaScript中的内存泄漏的原因

    JavaScript内存泄漏的原因 什么是内存泄漏? 内存泄漏指的是在程序中,某一个对象在不再被使用时,仍然被占用了内存空间,导致内存空间的浪费问题。如果出现内存泄漏,会导致应用程序变得越来越慢,最终可能导致程序崩溃。 JavaScript中的内存泄漏非常难以发现,因为它不会在内存使用率上直接显示出来。下面是Javascript中的内存泄漏的原因及解决方案。…

    JavaScript 2023年6月10日
    00
  • JavaScript的防抖和节流案例

    JavaScript的防抖和节流是常用的优化技巧,可以有效地控制函数的执行频率,提升Web页面的性能和用户体验。本文将从原理、使用场景,以及基于两个实际案例的讲解,逐步深入介绍JavaScript的防抖和节流优化技巧。 一、防抖和节流的原理 防抖和节流的本质都是控制函数的执行频率,从而提升Web页面的性能。他们的实现方式不同,具体如下: 1. 防抖 防抖的原…

    JavaScript 2023年6月10日
    00
  • JS层移支示例代码

    需要讲解JS层移支的示例代码,我们先来明确一下JS层移支(JS舞台)在网页中的作用:为网站添加交互功能。那么JS层移支示例代码的完整攻略就是为网页添加交互功能的过程。 在添加交互功能之前,需要准备一个能够运行JS代码的环境,这个环境在网页中就是浏览器。在浏览器中可以使用console.log()来在控制台输出信息,这对于调试代码非常有帮助。 为了添加交互功能…

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