JS实现滚动监听以及滑动到顶部

效果图:
在这里插入图片描述

在这里插入图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><!-- <meta name="viewport" content="width=device-width, initial-scale=1.0" /> --><meta name="viewport" content="width=device-width, user-scalable=no" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>JS实现滚动监听以及滑动到顶部</title><script src="https://cdn.bootcss.com/eruda/1.4.3/eruda.min.js"></script><script>eruda.init();</script></head><body><style>body {margin: 0;background-color: rgba(0, 0, 255, 0.1);height: 200vh;}.uptop {position: fixed;bottom: -50px;right: 10px;width: 50px;z-index: 99;background: rgba(0, 0, 0, 0.2);text-align: center;-webkit-transition: all 0.5s;-moz-transition: all 0.5s;-ms-transition: all 0.5s;-o-transition: all 0.5s;transition: all 0.5s;}.uptop img {width: 80%;cursor: pointer;}</style><div class="uptop" id="uptop"><!-- 这里用了一个向上的箭头图片,用于表明返回顶部 --><img src="img/up_to_top.png" id="to-top" /></div><script>// 使用touchstart和touched封装了一个移动端的tap事件var idcast = {// 传入dom元素tap: function(dom, callback) {//判断是否传入了dom元素,或者dom元素是否是一个对象if (!dom || typeof dom != "object") {return;}var startX, startY, time, moveX, moveY, distanceX, distanceY;dom.addEventListener("touchstart", function(e) {if (e.targetTouches.length > 1) {return;}startX = e.targetTouches[0].clientX;startY = e.targetTouches[0].clientY;time = Date.now();});dom.addEventListener("touchend", function(e) {if (e.changedTouches.length > 1) {//说明不止一个手指return;}//判断时间差异if (Date.now() - time > 150) {console.log("长按操作");return;}//获取松开手指的时候的坐标与触摸开始时的坐标差异moveX = e.changedTouches[0].clientX;moveY = e.changedTouches[0].clientY;distanceX = moveX - startX;distanceY = moveY - startY;//判断坐标差异if (Math.abs(distanceX) < 6 && Math.abs(distanceY) < 6) {//说明是点击而非滑动//执行tap事件相应之后的处理操作//若函数不为空才调用callback && callback(e);console.log("移动端点击单击事件--tap事件");} else {console.log("滑动操作");}});}};window.onscroll = function() {var t = document.documentElement.scrollTop || document.body.scrollTop; //获取距离页面顶部的距离var uptop = document.getElementById("uptop"); //获取div元素if (t >= 300) {//当距离顶部超过300px时uptop.style.bottom = 30 + "px"; //使div距离底部30px,也就是向上出现} else {//如果距离顶部小于300pxuptop.style.bottom = -50 + "px"; //使div向下隐藏}};var top = document.getElementById("to-top"); //获取图片元素var timer = null;// 方式1(推介): 解决了移动端click延迟300ms触发问题idcast.tap(top, function(e) {//点击图片时触发点击事件timer = setInterval(function() {// 设置一个计时器var ct =document.documentElement.scrollTop || document.body.scrollTop; //获取距离顶部的距离ct -= 10;if (ct > 0) {//如果与顶部的距离大于零window.scrollTo(0, ct); //向上移动10px} else {//如果距离小于等于零window.scrollTo(0, 0); //移动到顶部clearInterval(timer); //清除计时器}}, 10); //隔10ms执行一次前面的function,展现一种平滑滑动效果});// 方式2: IOS微信端打开时 无法触发click事件// top.onclick = function() {//   //点击图片时触发点击事件//   timer = setInterval(function() {//     // 设置一个计时器//     var ct =//       document.documentElement.scrollTop || document.body.scrollTop; //获取距离顶部的距离//     console.log(ct);//     ct -= 10;//     if (ct > 0) {//       //如果与顶部的距离大于零//       window.scrollTo(0, ct); //向上移动10px//     } else {//       //如果距离小于等于零//       window.scrollTo(0, 0); //移动到顶部//       clearInterval(timer); //清除计时器//     }//   }, 10); //隔10ms执行一次前面的function,展现一种平滑滑动效果// };</script></body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

display:table-cell自适应布局下连续单词字符换行

1. display:table-cell自适应布局 典型的双栏布局类名使用如下&#xff1a; 这种方式实现的自适应布局&#xff0c;元素宽度无需定值&#xff0c;且margin(浮动部分)与padding自由设置&#xff0c;支持百分比宽度&#xff08;table-cell内&#xff09;&#xff0c;且可以无限制…

javascript学习系列(21):数组中的reduceRight法

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说…

向高手学习--第3列数据是第2列从头到当前行的值之和

From: http://topic.csdn.net/u/20111203/13/1fb6742b-205f-4bc0-bdeb-ba26a7e174aa.html?14713 问题描述&#xff1a; 我现在有一个表&#xff0c;名字为 table1, 表里有两列&#xff0c;一列是序号ID&#xff0c;一列是数量 NUM1&#xff0c;比如ID1 NUM11 202 303 504 10…

JS滚动条位置,顶部,底部,触发事件

效果图: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><meta http-equiv"X-UA-Compatible" c…

ArcGIS 10.0安装之 ArcSDE的安装

第三部分 SDE的安装、部署 1、 安装SDE程序&#xff0c;并进行注册 &#xff08;1&#xff09;选择注册机&#xff0c;点击server标签&#xff0c;在Feature下拉列表框选择arcsdeserver&#xff0c;Version下拉列表框选择100&#xff0c;点击ALL按钮&#xff0c;生成license文件…

自适应表格连续字符换行及单行溢出点点点显示

我们应该都知道使用 让连续的英文数字字符换行显示 让单行文字超出的时候使用点点点表示 但是&#xff0c;如果是自适应的表格中&#xff0c;我们要实现上面两个效果&#xff0c;可能就会遇到挫折&#xff0c;你会发现屡试不爽的方法现在完全被无视了&#xff01; 例如&#…

javascript学习系列(23):数组中的解构方法

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说解…

IMG图片和文字同一行显示,图片和文字居中显示

问题其实很好解决&#xff0c;只要设定img标签的vertical-align CSS属性就好了&#xff0c;代码如下&#xff1a;

CSS 相对|绝对(relative/absolute)定位系列(一)

1. 绝对定位和浮动元素是近亲&#xff1a;都具备包裹性和破坏性 包裹性&#xff1a;包裹性换种说法就是让元素inline-block化&#xff0c;例如一个div标签默认宽度是100%显示的&#xff0c;但是一旦被absolute属性缠上&#xff0c;则100%默认宽度就会变成自适应内部元素的宽度…

SharePoint 2013 List 备份使用

在测试环境新建List后经过不懈的调整&#xff0c;验证终于做出一个像模像样的表单。 这时候问题来。。。 要怎么迁移到生产环境或者正式环境呢&#xff1f; 在网上找了一些资料&#xff0c;不过都是10的。。 其实想想13跟10区别不大&#xff0c;于是顺利找到了解决方案 备份Lis…

javascript学习系列(24):数组中的substring方法

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说s…

将一个BYTE数组转换成16进制字符串和10进制字符串格式

背景&#xff1a; unsigned char port[5]; 以02x的格式打印出来是 00 00 02 00 00 1.如何转成16进制形式的字符串&#xff0c;使得char *strport16 "0000020000"; 2.如何转成10进制形式的字符串&#xff0c;使得char *strport10 "131072"; C code:…

CSS 相对|绝对(relative/absolute)定位系列(二)

1. 因为事先标准就已经在文字的后面显示&#xff0c;设置absolute之后因为跟随性仍然是在原来的文字&#xff0c;然后再设置margin实现定位即可 2. absolute正业之元素隐藏 元素隐藏与显示是我们在页面制作与交互效果实现中非常常见的&#xff0c;如果您只是使用display:none与…

javascript学习系列(25):数组中的substr

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说s…

CSS 相对|绝对(relative/absolute)定位系列(三)

1. absolute与等高布局 拿简单的两栏布局举例&#xff0c;左栏与右栏有不同的背景色&#xff0c;且中间隔边框线分隔&#xff0c;如何实现&#xff1f;因为随着内容的不同&#xff0c;有可能左侧栏高度较高&#xff0c;也有可能是右侧栏高度较高。所以&#xff0c;要实现无缝的…

CPUID详解[增加TLB与Cache]

From: http://bbs.pediy.com/showthread.php?threadid21646 标 题:CPUID详解[增加TLB与Cache]作 者: Pr0Zel 时 间: 2006-02-21,22:00:23 链 接: http://bbs.pediy.com/showthread.php?t21646 这是文章最后一次更新,加入了TLB与Cache信息等资料前言:论坛上面有人不明白CPUID指…

2009年5月软件设计师考前预测试题及考点解析

更多试题及要点解析请参见《软件设计师考试考前冲刺预测试卷及考点解析》、《应试捷径--典型考题解析与考点贯通(系统分析师考试)》&#xff0c;不断更新中&#xff0c;敬请持续关注&#xff01;

纯CSS实现侧边栏/分栏高度自动相等

一、为何要分栏高度一致&#xff1f; 分栏高度一致的目的是更加美观。举两个例子吧 2.1 对于分栏布局&#xff0c;我们或许会用边框(border)进行分隔&#xff0c;就如鄙人博客的分栏 此时最担心的问题就是高度不一致&#xff0c;尤其是无边框属性的分栏高度超过有边框属性的分…

gitservergitlab之搭建和使用

gitserver比較有名的是gitosis和gitolite&#xff0c;这两个管理和使用起来略微有些复杂&#xff0c;没有web页面&#xff0c;而gitlab则是类似于github的一个工具&#xff0c;github无法免费建立私有仓库&#xff0c;而且为了代码安全&#xff0c;于是在内网安装了一个自己实验…