• 我要返回顶部


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

    以下是一些方法:

    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);

    简直帅的没朋友。

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

  • 相关阅读:
    获取css信息
    html嵌套规则
    js获取ip地址
    match excel test search replace 用法
    js 宽和高
    判断类型 从零开始系列
    js随机数 从头开始系列
    苹果自带拼音转换方法
    iOS GCD 拾遗
    iOS用户响应者链的那些事儿
  • 原文地址:https://www.cnblogs.com/wanglinmantan/p/5423152.html
Copyright © 2020-2023  润新知