当页面过长时,通常会在滚动条到一定位置时设置按钮,点击可以快速返回顶部或者指定的位置处。

参考文档:jQuery中页面返回顶部的方法总结

方法一:锚点定位

当点击a标签,会直接返回到顶部;如果p标签有id属性值,a标签href设置为该p标签的id属性值,则点击该a标签可以跳到此p标签处。

//p*40{$} 回车     可以自动形成p标签,innerHTML为1~40。<p>1</p>
<p>2</p>...
<p id="special">12</p>...
<p>40</p><a href="#">返回顶部</a>
<a href="#special">返回指定id处</a>

这种方法设置方便,但缺点是会刷新页面。

方法二:window.scrollTo(x,y)

下面这种方法也很方便,并且不会刷新页面,缺点是没有滚动效果。

<a href="javascript:scrollTo(0,0)">返回顶部</a>

scrollTo接收的参数用来定位视口左上角在整个滚动内容区域的坐标.

比如我设置scrollTo(100,100),就是让滚动内容的坐标(100,100)的点处在视口的左上角。

方法三:设置带有动画效果的滚动回顶部

1、js方法

思路:为window绑定scroll事件,监听页面滚动距离,当超过一屏高度时,显示返回顶部的按钮。

   为按钮绑定点击事件,返回顶部的方法就是获取页面滚动的距离,然后计算步长,这里采用滚动距离除以16的方式,滚动速度由快到慢。这里使用定时器控制滚动的频率,建议设置较小一点的值,如果时间间隔过大会有‘跳帧’的感觉。

<style>p {width: 100px;height: 50px;background: tomato;}div {width: 100px;height: 30px;background: yellowgreen;color: white;text-align: center;line-height: 30px;position: fixed; /*使用固定定位*/bottom: 50px;right: 50px;}
</style><p>1</p>
<p>2</p>...
<p id="special">12</p>...
<p>40</p>
<div id="toTop">back to top</div><script>var toTop = document.querySelector("#toTop");    toTop.style.display = "none";// 一开始div隐藏  window.addEventListener("scroll", scrollHandler);// 然后给window加事件监听,滚动条大于某个值时,div出现function scrollHandler(e) {        var distanceY = document.documentElement.scrollTop || document.body.scrollTop;//兼容写法,获取当前页面y轴的滚动距离if (distanceY > 50) {toTop.style.display = "block";} else {toTop.style.display = "none";}}// 然后给div添加点击事件,用计时器interval来循环,步长为5,scrollTop依次减5,时间每50ms循环一次,直到scrollTop为0清除计时器toTop.addEventListener("click", clickHandler);function clickHandler(e) {let timer = setInterval(function () {var distanceY = document.documentElement.scrollTop || document.body.scrollTop;//兼容if (distanceY == 0){clearInterval(timer);return;} var speed = Math.ceil(distanceY/16);//speed这个值从高变低,那么scrollTop就减得从快到慢,上回到顶部的速度就先快后慢document.documentElement.scrollTop=distanceY-speed;// document.documentElement.scrollTop=distanceY-5;//如果给速度一个确定的值,那回到顶部的就匀速}, 16);}</script>


这种方法优点是有了动画效果,只是实现起来比较麻烦,下面介绍一下jQuery方法。

2、jQuery方法
<script>$(function () {$("#toTop").hide();//一开始隐藏掉div$(window).scroll(function () {//console.log("scollTop:", $(this).scrollTop());//这个 this-->window  滚动条距离顶部的距离//console.log("height:", $(this).height());//窗口可视高度// if ($(window).scrollTop() > 50) {//判断条件1:设置如果滚动条距离顶部大于50px时,#toTop出现if ($(this).scrollTop() >= $(this).height()) {//判断条件2:如果滚动条滚动的实际高度>=窗口可视高度,则#toTop出现$("#toTop").fadeIn(500);//淡入,设置渐变时间持续0.5秒} else {$("#toTop").fadeOut(500);//淡出}})// 点击div,返回顶部$("#toTop").click(function () {// $(window).scrollTop(0);//直接这样没有滚动效果// 采用动画的形式,让整个文档网上滑动$("body,html").animate({//html是最外层标签,可以代表整个页面;body 是它二级标签,可以用它代表页面的文档部分// "body,html"都写上,兼容多浏览器scrollTop: 0}, 500);//500是滚动到顶部所需要的时间0.5秒})})</script>

返回顶部的div一开始被隐藏,然后做一个操作:判断何时显示div。

  • 本文提出两种,一种是设定固定高度,滚动下来的实际高度距离顶部的距离>50时,显示div;
  • 另一种是跟窗口可视高度进行比较,如果滚动条滚动的实际高度>=窗口可视高度,则显示div。

还需要注意的是,在jQuery中,$(window).scrollTop()代表窗口滚动条滚动下来的实际高度;$(window).height()代表此时窗口可视高度(窗口大小改变比如缩小,窗口可视高度随之改变)。

整体可以看出,使用jQuery代码简练,而且动画效果比较流畅。

这里需要注意设置animate方法时使用的是jQuery封装的body或html对象而不是window对象,因为我们要设置body或html的scrollTop属性。

jQuery的方法更适合大多数场景。

以上就是目前整理到的三种方法。

点击返回页面顶部(h5、js、jQuery 三种方式)相关推荐

  1. 数字滚动原生js的三种方式

    数字滚动原生js的三种方式 让数字滚动的效果简单用计时器setInterval就能轻易的实现,例如 <!DOCTYPE html> <html><head>< ...

  2. javascript-入门篇-使用js的三种方式

    练习题: 弹出窗口,提示语句"hello js" <script>alert("hello js"); </script> javasc ...

  3. 使用javascript实现在页面打印的效果的三种方式

    <div id="console"></div><script type="text/javascript">var con ...

  4. 异步加载js的三种方法

    js加载时间线 : 它是根据js出生的那一刻开始记录的一系列浏览器按照顺序做的事,形容的就是加载顺序,可以用来优化什么东西,理论基础,背下来. 1.创建Document对象,开始解析web页面.解析H ...

  5. jq实现页面滑动到一定位置显示返回顶部按钮,点击回到页面顶部

    返回顶部按钮固定在页面某个位置,当页面滑动超过600时,显示此按钮,可用jq的scrollTop()方法实现: 点击触发click事件,并返回到页面顶部,这里设置返回顶部的时间是1000ms(即1s) ...

  6. 如何通过HTML标记或JS代码实现跳转返回页面顶部

    本文介绍三款简单的返回页面顶部代码,可以使用简单的HTML锚标记,也可使用JavaScript Scroll函数动态返回,其它的还有悬浮脚本等有点复杂了,本文不再介绍,大家根据自己需要选择其中的一种即 ...

  7. 返回页面顶部最简单方法

    返回页面顶部最简单方法 <a href="#">返回页面顶部</a>

  8. 迅速返回页面顶部代码

    <迅速返回页面顶部代码> <DIV style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; FILTER: p ...

  9. Vue项目点击刷新页面的三种方式

    Vue项目点击刷新页面的三种方式 一.原生js刷新方式: location.reload(); 二.Vue框架自带的路由跳转方式: this.$router.go(0); 三.在App.vue页面声明 ...

最新文章

  1. 时至今日,NLP怎么还这么难!
  2. IIS+PHP下调用WebService初试
  3. 使用Gunicorn Ngnx Supervisor部署Django项目
  4. SQL Server,Could not obtain exclusive lock on database 'model'
  5. 电费竟然占了数据中心运维总成本的7成?
  6. response获取响应内容_Project Reactor 深度解析 - 1. 响应式编程介绍,实现以及现有问题
  7. 0/1背包问题-----动态规划求解
  8. [每天一个知识点]3-程序员的三大美德(2)
  9. 服务器用户设置备份,用户配置文件状态变成“备份”
  10. 【ElasticSearch】ElasticSearch 6 IK 同义词 配置
  11. 大数据算法_大数据算法下的我们,犹如“皇帝的新衣”
  12. RYYB图像格式学习
  13. 程序员该如何规划自己的职业发展?
  14. JAVA自学-day16-List的子类、泛型、增强for循环、静态导入、可变参数
  15. 使用Word脚注、尾注给论文添加参考文献并将编号修改成[1]的方法
  16. 卡通农场服务器无响应是怎么回事,卡通农场新买的平板打不开的解决方法
  17. Golang中用到的的Websocket库
  18. 贪心算法经典例题3:导弹发射问题
  19. MPU6050 DMP 代码完全解析 —— dmp_init
  20. Golang库 - viper读取配置文件

热门文章

  1. stm32 I2C、EEPROM
  2. win10同步服务器文件夹在哪,win10系统电脑一键实现文件夹视图同步的操作办法...
  3. Android官方开发文档Training系列课程中文版:打印内容之HTML文档打印
  4. JS String篇 字符串常用Api
  5. prophet踩坑日记
  6. 14期《温故知新》9月刊
  7. javaweb——java数据库连接
  8. SR-TE Policy(思科)----PCEP实验
  9. java继承求三角形圆形面积_java用接口、多态、继承、类计算三角形和矩形周长及面积的方法...
  10. 多人配音用什么软件?两分钟学会多人播音配音怎么弄