码迷,mamicode.com
首页 > 其他好文 > 详细

我要返回顶部

时间:2016-04-22 23:49:16      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

我觉得一个网站最不可少的小功能就是返回顶部了吧,尤其是那些长的要命,拉都拉不到尽头的,简直丧心病狂,如果没有返回顶部的按钮的话,鬼愿意原路拉回去,直接关掉走人。所以一个返回顶部的按钮还是需要的,当然,返回顶部也可以做出很多花样,本文只讨论如何返回,不管具体的外观样式,那都是后话。

以下是一些方法:

1.

<a href=‘#‘>返回顶部</a>

ok,搞定,是不是觉得很坑爹,但我刚开始接触的时候就是用这个方法的,简单暴力直接,就是硬生生的直接跳回去,不好看,没有美感,而且直接这样不太提倡,如果加个target属性的话,说不定就直接新开一个页面了,所以这个方法直接无视。

 

2.

<a name="top" id="top"></a>   //放到页面顶部

<a href="#top" target="_self">返回顶部</a> 

这个方法可以看作是第一个方法的简单升级版本,是利用锚标记实现的,不过还是那个问题,太干脆不好玩,用户有时候可不喜欢直接接受结果,适当有个过程还是更好的。所以作为一个有追求有理想有抱负的程序员怎么能这么随便呢,所以这个方法还是直接pass。

 

3.

这个方法是用Javascript Scroll函数实现的,scrollBy(x,y),是滚多少,而scroll(x,y)是滚到,所以你也可以直接一句scroll(0,0)就解决了,但是还是那个问题,没有过程,不够优雅。所以用scrollBy(x,y)再加个定时器就实现了,看下面:

function pageScroll() { 
window.scrollBy(0,-10); 
scrolldelay = setTimeout(‘pageScroll()‘,100); 

滚到0定时器还在继续,所以需要做个判断。

 if(document.documentElement.scrollTop==0) clearTimeout(scrolldelay);

<a href="pageScroll();">返回顶部</a> 

完美解决,像恋爱一样,循序渐进,非常好。

 

4.

第三个方法虽然有过程,但是还是不够好,为什么,因为它是匀速的,匀速不如变速好看,开始快,后慢,这比较贴近实际,所以改良一下,新代码如下:

function goTop(acceleration, time) { 
acceleration = acceleration || 0.1; 
time = time || 16; 
var x1 = 0; 
var y1 = 0; 
var x2 = 0; 
var y2 = 0; 
var x3 = 0; 
var y3 = 0; 
if (document.documentElement) { 
x1 = document.documentElement.scrollLeft || 0; 
y1 = document.documentElement.scrollTop || 0; 

if (document.body) { 
x2 = document.body.scrollLeft || 0; 
y2 = document.body.scrollTop || 0; 

var x3 = window.scrollX || 0; 
var y3 = window.scrollY || 0; 
// 滚动条到页面顶部的水平距离 
var x = Math.max(x1, Math.max(x2, x3)); 
// 滚动条到页面顶部的垂直距离 
var y = Math.max(y1, Math.max(y2, y3)); 
// 滚动距离 = 目前距离 / 速度, 因为距离原来越小, 速度是大于 1 的数, 所以滚动距离会越来越小 
var speed = 1 + acceleration; 
window.scrollTo(Math.floor(x / speed), Math.floor(y / speed)); 
// 如果距离不为零, 继续调用迭代本函数 
if(x > 0 || y > 0) { 
var invokeFunction = "goTop(" + acceleration + ", " + time + ")"; 
window.setTimeout(invokeFunction, time); 



5.

最后再来个用jquery的,简单,效果好,代码如下:

$(document.body).animate({‘scrollTop‘:0},500) || $(document.documentElement).animate({‘scrollTop‘:0},500);

简直帅的没朋友。

 

总结:返回顶部其实原理都一样,具体的实现过程可能不太一样,实际当中还要再做一些优化,提高用户体验,其实别看这样一个简单的功能,实现起来也需要认真对待。

我要返回顶部

标签:

原文地址:http://www.cnblogs.com/wanglinmantan/p/5423152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!