若无具体要求,推荐使用第三种方法
1.有缓冲且按钮的显示隐藏需要判断滚动条位置
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> #btn { position: fixed; bottom: 0; } </style> </head> <body style="height: 10000px"> <a href=" " id="btn" style="display: none">回到顶部</a > <script> window.onload = function(){ var btn = document.getElementById('btn'); // 获取视界高度; var winH = document.documentElement.clientHeight; // 定义计时器; var timer = null; // 定义是否抵达顶部布尔值判断; var isTop = true; // 设置滚动事件; window.onscroll = function(){ var toTop = document.body.scrollTop || document.documentElement.scrollTop; // 判断是否到了第二屏,若是,显示按钮; if (toTop >= winH) { btn.style.display = 'block'; }else{ btn.style.display = 'none'; }; // 判断是否抵达顶部,若否,停止计时器; if (!isTop) { clearInterval(timer); }; // 重置布尔值判断; isTop = false; } // 设置按钮单击事件; btn.onclick = function(){ // 设置计时器,50毫秒间隔; timer = setInterval(function(){ var toTop = document.body.scrollTop || document.documentElement.scrollTop; // 设置速度,用等式而不用具体数值是为了产生缓动效果; var speed = Math.ceil(toTop/5); // 作差,产生缓动效果; document.documentElement.scrollTop = document.body.scrollTop = toTop - speed; // 重置布尔值判断; isTop = true; // 判断是否抵达顶部,若是,停止计时器; if (toTop == 0) { clearInterval(timer); }; },50); } } </script> </body> </html>
2.点击无缓存跳到页面顶部:
①使用HTML的锚标记:唯一的缺点就是样式不怎么样,而且会在url里显示这个锚标记
<a name="top" id="top"></a>放置位置在只要靠近顶部即可
页面底部放置:<a href="#top" target="_self">返回顶部</a>
<a name="top"></a> ... <div style="position: fixed; top: 529px; left: 1269px; display: block;"> <a href="#" title="回到顶部"> <img src="http://static.blog.csdn.net/images/top.png" alt="TOP"></a> </div>
②Javascript Scroll函数:<a href="javascript:scroll(0,0)">返回顶部</a>
scroll第一个参数是水平位置,第二个参数是垂直位置,比如要想定位在垂直50像素,scroll(0,50)即可
3.有缓存但按钮一直位于底部(绝对位置)
<a onclick="pageScroll()" class="return-top">返回顶部</a> //写到页面底部,就是</body>前 function pageScroll() { //把内容滚动指定的像素数(第一个参数是向右滚动的像素数,第二个参数是向下滚动的像素数) window.scrollBy(0,-100); //延时递归调用,模拟滚动向上效果 scrolldelay = setTimeout('pageScroll()',100); //获取scrollTop值,声明了DTD的标准网页取document.documentElement.scrollTop,否则取document.body.scrollTop;因为二者只有一个会生效,另一个就恒为0,所以取和值可以得到网页的真正的scrollTop值 var sTop=document.documentElement.scrollTop+document.body.scrollTop; //判断当页面到达顶部,取消延时代码(否则页面滚动到顶部会无法再向下正常浏览页面) if(sTop==0) clearTimeout(scrolldelay); }
积累拓展:
scrollTo() 方法可把内容滚动到指定的坐标,所以也可以这样写
<a href="Javascript:window.scrollTo(0,0)">返回顶部</a> //等价于 <a href onclick="window.scrollTo(0,0);">返回顶部</a>
scrollBy() 方法可把内容滚动指定的像素数(右,下);
setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式(记时调用)
clearTimeout() 方法可取消由 setTimeout() 方法设置的 timeout
scrollTop() 方法返回或设置匹配元素的滚动条的垂直位置
计时调用方法可用于计时器,代码如下:(一秒加一,点击停止后计时终止)
<html> <head> <script type="text/javascript"> var c=0 var t function timedCount() { document.getElementById('txt').value=c c=c+1 t=setTimeout("timedCount()",1000) } function stopCount() { clearTimeout(t) } </script> </head> <body> <form> <input type="button" value="开始计时!" onClick="timedCount()"> <input type="text" id="txt"> <input type="button" value="停止计时!" onClick="stopCount()"> </form> <p> 请点击上面的“开始计时”按钮。输入框会从 0 开始一直进行计时。点击“停止计时”可停止计时。 </p> </body> </html>
一、使用锚点链接
毫无疑问,使用锚点链接是一种简单的返回顶部的功能实现。该实现主要在页面顶部放置一个指定名称的锚点链接,然后我们在页面下方放置一个返回到该锚点的链接,用户点击该链接即可返回到该锚点所在的顶部位置。
示例代码如下:
<!-- 定义一个名称为top的锚点链接 --> <aname="top"></a> <!-- 这里是网页主体内容,此处省略 --> <!-- 返回页面顶部top锚点的链接 --> <ahref="#top">返回顶部</a>
值得注意的是,在现代浏览器中,如果浏览器找不到指定的锚点(例如top),浏览器将会尝试跳转到id
为top的HTML元素的起始位置。因此,我们也可以在头部放置一个id为top的HTML元素,遗憾的是,并不是所有的浏览器——尤其是某些浏览器的旧版本,都兼容这种行为。
二、使用js函数scrollTo()
当然,我们还可以利用JavaScript为我们提供的函数scrollTo(x, y)
来实现返回到页面顶部的功能。scrollTo函数可以滚动到指定坐标(x, y)处的内容。我们将坐标设定为(0, 0)即可起到返回顶部的作用。
<ahref="javascript:scrollTo(0,0);">返回顶部</a>
三、使用js操作DOM样式
此外,我们还可以使用js将body或html等元素的scrollTop
属性设置为0,即可滚动到页面的顶部。我们一般使用jQuery来实现上述代码。
// 以下三种方式均可实现返回页面顶部 $(window).scrollTop(0); $('body').scrollTop(0); $('html').scrollTop(0);
此外,我们还可以使用jQuery的动画效果函数animate()
来实现平滑滚动到页面顶部的动画效果。
// 在500毫秒内平滑滚动到页面顶部 $('body').animate({scrollTop:0},500);