1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>Title</title>
6 <style>
7 .toTop{
8 width: 40px;
9 height: 40px;
10 background: pink;
11 font-size: 14px;
12 text-align: center;
13 color: #fff;
14 position: fixed;
15 right:100px;
16 bottom:100px;
17 cursor: pointer;
18 display: none;
19 }
20 body{
21 height: 2000px;
22 }
23 </style>
24 </head>
25 <body>
26 <div class="toTop">回到顶部</div>
27 <script type="text/javascript" src="js/jquery-1.10.1.js"></script>
28 <script type="text/javascript">
29 // 滚动距离超过首屏之后再显示 回到顶部按钮 小于这个距离 还要接着隐藏
30 $top=$('.toTop')
31 // document.onscroll=function(){
32 // var pageHight=document.documentElement.clientHeight;
33 // var scrollHight=$('html,body').scrollTop();
34 // if(scrollHight>pageHight){
35 // $top.show()
36 // }else{
37 // $top.hide()
38 // }
39 // }
40
41 //纯jq写法
42 $(window).scroll(function(){
43 var pageHight= $(window).height();// $(window),视口的高度
44 console.log(pageHight)
45 var scrollhight=$('html,body').scrollTop()
46 if(scrollhight>pageHight){
47 $top.show()
48 }else{
49 $top.hide()
50 }
51
52 })
53
54
55 $(function () {
56 // 动画总时长
57 var time = 3000;
58 // 动画帧时长 总时长/帧时长 = 总帧数(步数)
59 var itemTime = 30;
60
61 // 回到顶部 给按钮绑定单击事件
62 $('.toTop').click(function () {
63 // 获取总偏移(当前页面滚动条的坐标)
64 var offset = $('html').scrollTop() + $('body').scrollTop();
65 // 单次偏移 总偏移 / 总帧数(就是动画总时长 / 帧时长)
66 var itemOffset = offset / ( time / itemTime );
67
68 // 启动定时器 时间为帧时长 在定时器内 每一次减掉一个单次偏移
69 var timer = setInterval(function () {
70 offset -= itemOffset;
71 // 滚动条到达顶部之后 清除定时器
72 if(offset <= 0){
73 clearInterval(timer);
74 // 修正滚动条位置 这一步可以省略
75 // $('html,body').scrollTop(0);
76 offset=0;
77 }
78 // 设置滚动条的坐标
79 $('html,body').scrollTop(offset);
80 },itemTime)
81 })
82 })
83 </script>
84 </body>
85 </html>