用原生JavaScript做个简单的回到顶部

很多网页在下方都会放置一个“返回顶部”按钮,尤其是页面底部没有导航的网页,这样可以帮助访客重新找到导航或者重温一遍广告(想得真美)。随着近几年来 JavaScript 的应用日渐广泛,滑动效果无处不在,于是我也跟跟风,将返回顶部功能做成了滑动效果。后来为了更贴合物理特征, 改造做成了减速的滑动效果。

首先说一下原理吧,我们会获取滚动条到页面顶部的距离,然后上移一定的距离;再获取滚动条到页面顶部的距离,上移一定的距离(比上一次小一点);以此类推 ...

先上代码吧:汝阳县第一中学

view source

print?

01 <script type="text/javascript">
02 /**
03 * 回到页面顶部
04 * @param acceleration 加速度
05 * @param time 时间间隔 (毫秒)
06 **/
07 function goTop(acceleration, time) {
08     acceleration = acceleration || 0.1;
09     time = time || 16;
10  
11     var x1 = 0;
12     var y1 = 0;
13     var x2 = 0;
14     var y2 = 0;
15     var x3 = 0;
16     var y3 = 0;
17  
18     if (document.documentElement) {
19         x1 = document.documentElement.scrollLeft || 0;
20         y1 = document.documentElement.scrollTop || 0;
21     }
22     if (document.body) {
23         x2 = document.body.scrollLeft || 0;
24         y2 = document.body.scrollTop || 0;
25     }
26     var x3 = window.scrollX || 0;
27     var y3 = window.scrollY || 0;
28  
29     // 滚动条到页面顶部的水平距离
30     var x = Math.max(x1, Math.max(x2, x3));
31     // 滚动条到页面顶部的垂直距离
32     var y = Math.max(y1, Math.max(y2, y3));
33  
34     // 滚动距离 = 目前距离 / 速度, 因为距离原来越小, 速度是大于 1 的数, 所以滚动距离会越来越小
35     var speed = 1 + acceleration;
36     window.scrollTo(Math.floor(x / speed), Math.floor(y / speed));
37  
38     // 如果距离不为零, 继续调用迭代本函数
39     if(x > 0 || y > 0) {
40         var invokeFunction = "goTop(" + acceleration + ", " + time + ")";
41         window.setTimeout(invokeFunction, time);
42     }
43 }
44 </script>

效果演示

返回顶部

document.documentElement.scrollTop, document.body.scrollTop, window.scrollY 其实都是一样的,但它们只在某些浏览器中起作用。至于那哪个在哪些浏览器起作用可以自己调试一下。

如何使用?

view source

print?

1 <a href="#" onclick="goTop();return false;">TOP</a>
时间: 2024-12-15 06:59:36

用原生JavaScript做个简单的回到顶部的相关文章

原生js做一个简单的进度条

用原生js做进度条,布局非常简单,一个盒子里放一个span标签,让它的宽度为0,并且转成块元素. 主要用定时器动态增加span的宽度,并且当它的宽度大于父级盒子的宽度的时候停止 效果如下: 一 css如下: *{ margin: 0; padding: 0; } #box{ width: 500px; height: 30px; margin: 50px auto; overflow: hidden; border: 1px solid #CCCCCC; border-radius: 15px;

HTML DOM 事件(实现一个简单的回到顶部功能)

HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序.事件通常与函数结合使用,函数不会在事件发生前被执行! (如用户点击按钮). 利用onscroll事件写一个回到顶部功能,代码如下: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" c

web前端入门到实战:HTML DOM 事件(实现一个简单的回到顶部功能)

HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序.事件通常与函数结合使用,函数不会在事件发生前被执行! (如用户点击按钮). 利用onscroll事件写一个回到顶部功能,代码如下: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" c

原生js实现使滚动条缓慢回到顶部的效果

html 部分 (因为a标签有链接功能,此时最好不要用a包裹 否则影响实现效果) <li id="btn-top">回到顶部</li> js部分 var top=document.getElementById("btn-top"); var bottom=document.getElementById("btn-top"); top.onclick=function(){ //alert(11); timer=setInt

JavaScript实现回到顶部

HTML页面使用一个a标签,href内填写JavaScript:;以阻止默认行为,在学习实例的时候添加一个大的div来充实页面. demo: <a href="javascript:;" id="btn" title="回到顶部"></a> 其css代码为: #btn{ display: none; position: fixed; left: 90%; bottom: 40px; height:60px; width:

原生javascript获取dom元素简单介绍

原生javascript获取dom元素简单介绍: 使用jQuery可以各种方式获取元素,比如id选择器,类选择器,元素选择器等等,非常的方便. 下面就介绍一下如何利用原生的js实现获取dom元素的功能. 一.通过id获取元素: 最方便的那就是使用document.getElementById()函数. 具体可以参阅document.getElementById()一章节. 二.通过标签获取元素: 使用document.getElementsByTagName()函数. 具体可以参阅documen

简单地做一下“回到顶部”按钮,用jQuery实现其隐藏和显示

1.首先,我们要准备HTML代码: <div id="return-top"> <a href="#top">返回顶部</a> </div> 这里的<a>标签里面的href=“#top”就表示点击它就可以回到顶部,就不写回到顶部的代码了 2.设置其CSS样式: #return-top{ width: 50px; height: 50px; background-color: #8FBC8F;/*背景颜色*/

原生javascript实现的一个简单动画

本文章向大家介绍一个javascript实现的动画.点击开始按钮div会往右移动,点击停止后,div停止移动,再点击则继续移动.请看下面代码. <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <head> <title>javascript实现的简单动画</title> <style type="text/css"&g

原生javascript解析xml文档

之前写过一篇 <javascript/jQuery解析或转换json和xml>链接是http://my.oschina.net/ososchina/blog/343748,这篇博客详细解释了json使用 JSON.js  window.eval() ,jQuery 与字符串互相转换的方法 ,顺便也说了一点jQuery解析xml文档的方法,这里着重论述javascript操作xml. 顺便提一下,今天做项目有一点问题,如何让服务程序接口返回的就是json,而不需要 使用 jQuery.ajax设