js实现回到顶部效果

2023-10-27

功能:

  1. 滚动到第二屏才出现“返回顶部”按钮;
  2. 点击“返回顶部”按钮会返回顶部,而且速度越来越慢;
  3. 在返回顶部的途中如果用鼠标滚一下滚轮会停止返回顶部的滚动。
<script>
        window.onload = function() {
            获取回到顶部的按钮
            var btn = document.getElementById('btn');
            var timer = null;

            // 标识是否清除定时器,为了实现在回到顶部的过程中通过滚动一下鼠标实现清除定时器从而达到滚动的目的
            var isTop = true;

            // 获取页面可视区高度,从而判断返回顶部按钮是否出现
            var cHeight = document.documentElement.clientHeight;

            window.onscroll = function() {
                // 让返回顶部按钮在第二屏才开始出现
                var osTop = document.documentElement.scrollTop || document.body.scrollTop;
                if (osTop >= cHeight) {
                    btn.style.display = 'block';
                } else {
                    btn.style.display = 'none';
                }

                if (!isTop) {
                    clearInterval(timer);
                }
                isTop = false;
            }

            btn.onclick = function() {
                // 设置定时器
                timer = setInterval(function() {
                    // 获取滚动条距离顶部的高度
                    var osTop = document.documentElement.scrollTop || document.body.scrollTop;
                    // 越滚越慢,设置成负数是为了防止减不到0
                    var ispeed = Math.floor(-osTop / 6);
                    document.documentElement.scrollTop = document.body.scrollTop = osTop + ispeed;

                    isTop = true; // 这里记得设置,不然滚一次就停止了

                    if (osTop == 0) {
                        clearInterval(timer);
                    }
                }, 30);
            };
        }
    </script>

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js实现回到顶部效果 的相关文章

  • Sublimewebinspector 断点不能打上的解决方法

    最近老大在sublime上开发出了我们产品的开发包 这个开发包能像ZenCoding一样快速打出前端代码 这样开发者用我们产品的概率就大多了 但是对于产品中的js代码 现在还没有很好的工具 搬砖的我小有雄心壮志的想给我们的产品开发一个JS代
  • 仿中国婚博会微信小程序

    仿中国婚博会微信小程序 app json pages pages index index pages cash cash pages marry marry pages community community pages me me pag
  • 转JSON报错怎么办?增加发生js错误时候的代码强壮性

    在js中有些内置方法在使用的时候当传入意外类型参数的时候会报错卡死导致直接让整个项目都跑不起来了 比如 今天 这里就说一个增加代码强壮性的方法 try catch finally 众所周知 try catch 是处理意外错误时候的语句 主要
  • html中使用js实现体彩11选5随机选号

    体彩11选5随机选号 页面预览 代码实现
  • js 微观任务、宏观任务、循环机制

    javascript是单线程语言 就是因为单线程的特性 就不得不提js中的同步和异步 同步和异步 所谓单线程 无非就是同步队列和异步队列 js代码是自上向下执行的 在主线程中立即执行的就是同步任务 比如简单的逻辑操作及函数 而异步任务不会立
  • koa使用之node.js 文件加密与解密

    利用node js的crypto模块实现文件加密解密 代码 加密函数 param text 需要加密的内容 param key 秘钥 returns Query 密文 function encode text key var secret
  • QRCode简单生成二维码

    QRCode简单生成二维码 1 导包 2 jsp的body里 div div
  • JavaScript重写Symbol(Symbol.iterator)实现迭代器(1)

    iterator迭代 做的跟java集合迭代差不多就行了 示例图 h1 对象遍历重写iterator接口1 h1
  • Ajax核心技术之XMLHttpRequest对象

    XMLHttpRequest对象到底是什么 跟Ajax到底有什么联系 在了解它之前还是要先了解一下Ajax的功能 与以往的技术不同 Ajax是为了实现异步操作 那么关于异步 好像一个管理者安排好一个项目计划后 将这个项目交给下属去做 而自己
  • 封装一个通用的ajax请求

    封装ajax function useajax method url data callback type 创建兼容对象 var xhr if window XMLHttpRequest xhr new XMLHttpRequest els
  • IntelliJ IDEA 15款 神级超级牛逼插件推荐(自用,真的超级牛逼)

    来源 http suo im 5X5Rql 满满的都是干货 所有插件都是在 ctrl alt s 里的plugins 里进行搜索安装 1 CodeGlance 代码迷你缩放图插件 2 Codota 代码提示工具 扫描你的代码后 根据你的敲击
  • js数组相加相减函数

    数组相减 reduceArray arr1 arr2 for var i arr1 length 1 i gt 0 i var a arr1 i for var j arr2 length 1 j gt 0 j var b arr2 j i
  • js 手机、邮箱、身份证格式验证

  • JS混淆加密的代码如何解密

    科普简介 混淆是指将 JavaScript 代码变得难以理解的过程 这可以通过更改变量名 函数名和类名 以及将代码压缩到一行来实现 混淆的主要目的是使代码难以被盗用 并保护代码的知识产权 功能作用与常用的解决方案 混淆后的代码很难阅读 但是
  • Vue.observable的理解

    一 Observable 是什么 Observable 翻译过来我们可以理解成可观察的 先来看其在Vue中的定义 Vue observable 让一个对象变成响应式数据 Vue 内部会用它来处理 data 函数返回的对象 返回的对象可以直接
  • js 对数组对象进行排序

    let listData id 1 name 测试1 presenttime 1557883600000 id 2 name 测试2 presenttime 1580751813000 id 3 presenttime 1561448381
  • CocosCreator列表scrollview滑动速度的修改,鼠标滚动速度修改

    由于cocos creator 在pc端 使用scrollview 鼠标滚动速度太慢 原文地址 CocosCreator列表滑动速度的修改 简书CocosCreator列表滑动速度的修改 简书引擎版本 2 2 2 之后升级的2 4 0直接可
  • 30天精通Nodejs--第十四天:MongoDB

    这里写目录标题 前言 什么是 MongoDB 安装 MongoDB 驱动 连接到 MongoDB 数据库 执行基本操作 插入文档 查询文档 更新文档 删除文档
  • vue2项目实现excel文件导入导出和拖拽上传

    文章目录 一 excle文件导出 二 excel文件导入 三 文件拖拽上传 四 完整代码 文件导入导出实现逻辑图 一 excle文件导出 导出员工接口返回的是二进制流 axios配置responseType为blob接收二进制流文件为Blo
  • 30天精通Nodejs--第二十二天:express-认证和授权

    目录 引言 理解JWT及其工作原理 安装与引入JWT库 生成JWT令牌 验证JWT令牌 注意事项与最佳实践 结语 引言 在现代Web应用开发中 JSON Web Tokens JWT 作为一种轻量级 自包含且安全的标准 已被广泛用于实现用户

随机推荐

  • 设计模式之Builder模式(链式调用)

    问题背景 Builder模式在很多地方都有用到 代码风格也比较简洁 但是对其深入的了解并不多 因此在参考其他博客的基础上写此文章 首先先看我的实际应用到Builder模式的场景 场景一 这是在编写RPC简易框架时 需要输入服务端的配置信息时
  • OA 系统工作流引擎 Camunda 实践(1)

    审核人员看清楚再审核 我是把自己公司的案例分析一下 这哪是广告 Camunda是Activiti最大的贡献者之一 除Alfresco以外 同时也是它一个主 要的执行咨询合作伙伴 camunda表示Activiti可能太拘束于Alfresco
  • VMware vCenter Server 8.0安装并添加ESXi 7.0主机(含ESXi 6.7版本升级至7.0版本)

    目录 一 VMware vSphere虚拟化方案名词梳理 1 VMware Workstation 虚拟化工具 2 VMware vSphere 虚拟化方案 2 1 ESXi 裸金属架构的虚拟化技术 2 2 vCenter Server 批
  • # DevOps名词定义梳理

    DevOps名词定义梳理 极限编程座右铭 如果它令你很受伤 那么就做更多的练习 If it hurts do it more often 经常人们会把这些名词用错 构建 就是把源代码制成成品的过程 这个过程一般会有单元测试 集成 将各个项目
  • Python3.7 Scrapy 提示def write(self,data,asyc) 语法错误

    Scrapy 执行爬虫任务 提示如下错误信息如下 from twisted conch import manhole telnet File D python3 6 Lib site packages twisted conch manho
  • es中修改索引名称命令_在Elasticsearch中更改索引名称

    es中修改索引名称命令 嘿 今天 我碰巧写了一个脚本来解决一个看起来很多人都面临的特定问题 重命名给定的Elasticsearch索引 自然地 有记录在案的解决方案 但是我没有Swift找到一个脚本可以让我找到我想要的位置 来自索引a所有数
  • Latex 字体加粗

    textbf w 显示为 w textbf w w
  • mysql数据库datetime字段转换成java中Date类型

    最终代码展示 输出Account类型对象 使用ResultSet类中的getDate方法只能获取到获取到日期不能得到时间 使用ResultSet类中的getTime方法只能获取到获取到时间不能得到日期 使用ResultSet类中的getTi
  • Java 开发中常见的异常有哪些?

    1 空指针异常 NullPointException 当对象不存在 却又去调用对象的属性或方法时 就会出现该异常 2 数组越界异常 ArrayIndexOutOfBoundsException 当数组只存在5个元素 他们所对应的的下标即为0
  • MySQL显示ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)解决方法

    MySQL显示ERROR 2003 HY000 Can t connect to MySQL server on localhost 10061 解决方法 第一步 在win快捷键下已管理员身份启动cmd命令然后进入mysql安装目录下的bi
  • 10信号学习之signal函数及使用其实现信号捕捉案例

    1 signal函数 功能 该函数注册一个信号捕捉函数 对比上一篇的案例和相关函数 都是针对于信号集操作的 而这个函数是针对处理动作来操作的 你可以利用此函数将捕捉到的信号按自己的方式执行 例如你可以捕捉段错误的信号后执行打印hello w
  • STM32无法下载程序

    新研发了一块STM32板 MCU使用的是STM32F4 前期硬件测试都是正常的 电源等各项硬件指标都是正常的 但是在下载程序测试的时候出现了问题 板子只能下载第一次程序成功 第二次就不能识别芯片 无法下载程序 貌似MCU被锁死 检查原理图并
  • warning: unknown attribute ‘at‘ ignored [-Wunknown-attributes] keil报错处理

    背景在KEIL v6版本编译 attribute at 语句 const unsigned char vis sensor fw attribute at 0X0800C800 0x98 0x14 0x00 0x20 0x65 0x01 0
  • java Spring调试 ApplicationContext cannot be resolved to a type

    今天开发过程中遇到了不能识别导入的Spring jar包的情况 ApplicationContext cannot be resolved to a type 本人分析情况为两种 1 导入的包错误 2 本人遇到的情况 就是jre版本过高 将
  • RawImages图片加载方式

    using UnityEngine using UnityEngine UI public class RawImagesExtend MonoBehaviour Header 资源加载方式 public SourceMode source
  • java底层学习

    额 马上就要面试了 java的底层肯定是需要了解的 网上找了找java的底层文章 做个记号 java底层主要是类的加载 连接和初始化 本文主要分为四个方面 1 java底层概述 2 new和newInstance 方法的区别 3 深入探讨j
  • activiti5之监听器

    activiti5之监听器 业务场景 在使用工作流时 通常伴随着很多具体的需求 例如 activiti人员动态的分配 当前任务节点完成的时候 指定需要指定下一个节点的处理人 比如 一个请假流程 a员工请假 需要指定下一步需要处理请假流程的领
  • Python目标检测数据集格式处理,VOC格式转YOLO格式

    众所周知 CV算法模型训练第一步该做的是数据集制作 最近遇到需要将VOC格式的数据集转为yolo格式 数据集前期的一些预处理参考博客 Python删除txt文档的某一列 fengfeng18k的博客 CSDN博客 Python修改txt某列
  • 卷积神经网络(CNN)入门:使用Python实现手写数字识别

    在上一篇文章中 我们介绍了如何使用Python实现一个简单的前馈神经网络 本文将重点介绍卷积神经网络 CNN 这是一种在计算机视觉任务中表现优异的深度学习模型 我们将从卷积神经网络的基本原理开始 介绍卷积层 池化层和全连接层等概念 然后使用
  • js实现回到顶部效果

    功能 滚动到第二屏才出现 返回顶部 按钮 点击 返回顶部 按钮会返回顶部 而且速度越来越慢 在返回顶部的途中如果用鼠标滚一下滚轮会停止返回顶部的滚动