• 返回顶部的js实现


    原文链接:http://www.cnblogs.com/ATree/archive/2011/04/09/JQuery_Mootools_Back-Top.html

    点击这里“返回顶部”字样的按钮后,页面就像是抹了润滑剂一样,倏地一声就滑到顶部了,同时,该点击按钮也玩起了躲猫猫 – 不见了。

    实现的原理嘛,恩……估计鲜有人关心,所以我也懒得浪费口水了,直接上代码。

    无论是这里的jQuery实现还是MooTools实现,下面的CSS代码都是一致的,如下:

    .backToTop {
    
        display: none;
    
        width: 18px;
    
        line-height: 1.2;
    
        padding: 5px 0;
    
        background-color: #000;
    
        color: #fff;
    
        font-size: 12px;
    
        text-align: center;
    
        position: fixed;
    
        _position: absolute;
    
        right: 10px;
    
        bottom: 100px;
    
        _bottom: "auto";
    
        cursor: pointer;
    
        opacity: .6;
    
        filter: Alpha(opacity=60);
    
    }
    (function() {
    var $backToTopTxt = "返回顶部", $backToTopEle = $('<div class="backToTop"></div>').appendTo($("body"))
    .text($backToTopTxt).attr("title", $backToTopTxt).click(function() {
    $("html, body").animate({ scrollTop: 0 }, 120);
    }), $backToTopFun = function() {
    var st = $(document).scrollTop(), winh = $(window).height();
    (st > 0)? $backToTopEle.show(): $backToTopEle.hide();
    //IE6下的定位
    if (!window.XMLHttpRequest) {
    $backToTopEle.css("top", st + winh - 166);
    }
    };
    $(window).bind("scroll", $backToTopFun);
    $(function() { $backToTopFun(); });
    })();

    寥寥十几行代码就实现了全部的交互细节了。您可以将上面代码直接拷贝到您的JavaScript文件中,页面就有效果啦!对了,请使用jQuery 1.4+。

    这里注意脚本的引用位置哦如果按照上面的引用 需要把他放置在body里面或者下面任何地方,如果需要引用到head上面把上面的脚本需要放置到$(document).ready(function(){........})

    在IE6下有抖动的问题 解决办法如下:

    * html,* html body {background-image:url(about:blank);background-attachment:fixed;}

     下面我们来解决“抖动”问题:引用http://blog.sina.com.cn/s/blog_56e3129d0100az9s.html

      显然IE有一个多步的渲染进程。当滚动或调整浏览器大小的时候,它将重置所有内容并重画页面,这个时候它就会重新处理css表达式。这会引起一个丑陋 的“抖动”bug,在此处固定位置的元素需要调整以跟上(页面的)滚动,于是就会“抖动”。(仅用上面的代码时,就会出现这样的抖动。)

      解决此问题的技巧就是使用background-attachment:fixed为body或html元素添加一个background-image。这就会强制页面在重画之前先处理CSS。因为是在重画之前处理CSS,也就会同样在重画之前首先处理你的CSS表达式。从而实现完美平滑的固定位置元素!

      作者(原文位置:http://subtlegradient.com/articles/2009/07/29/css_position_fixed_for_ie6.html)还发现了另外一个小技巧:根本无需一个真实的图片!可以使用一个about:blank替代一个spacer.gif图片,而且它工作的同样出色。


    CSS CODE:

    .fixed-top {position:fixed;bottom:auto;top:0px;}
    .fixed-bottom {position:fixed;bottom:0px;top:auto;}
    .fixed-left {position:fixed;right:auto;left:0px;}
    .fixed-right {position:fixed;right:0px;left:auto;}
    
    * html,* html body {background-image:url(about:blank);background-attachment:fixed;}
    * html .fixed-top {position:absolute;bottom:auto;top:expression(eval(document.documentElement.scrollTop));}
    * html .fixed-right  {position:absolute;right:auto;left:expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-this.offsetWidth)-(parseInt(this.currentStyle.marginLeft,10)||0)-(parseInt(this.currentStyle.marginRight,10)||0));}
    
    * html .fixed-bottom {position:absolute;bottom:auto;top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));}
    
    * html .fixed-left {position:absolute;right:auto;left:expression(eval(document.documentElement.scrollLeft));}

     经过整理如下

    * html,* html body {background-image:url(about:blank);background-attachment:fixed;}
    
    .backToTop {
        border:1px solid red;
        display: block;
        width: 18px;
        line-height: 1.2;
        padding: 5px 0;
        background-color: #000;
        color: #fff;
        font-size: 12px;
        text-align: center;
        position: fixed;
        _position: absolute;
        right: 10px;
        bottom: 100px;
        _top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-150));
        cursor: pointer;
        opacity: .6;
        filter: Alpha(opacity=60);
        z-index:9999999;
    }

    去掉上面js段落中的

    //IE6下的定位
    if (!window.XMLHttpRequest) {
    $backToTopEle.css("top", st + winh - 166);

    如果这篇文章对您有帮助,您可以打赏我

    技术交流QQ群:15129679

  • 相关阅读:
    今天实现了 沿路径移动
    enum类型的本质(转)
    (转)成为优秀技术人员的两点建议
    深入理解 C# 协变和逆变
    web通信
    ajax入门(复习)
    git版本管理工具的使用
    在asp.net 中使用httpmodules对网页进行处理
    asp.net http概念原理复习
    web page复习笔记
  • 原文地址:https://www.cnblogs.com/yeminglong/p/2837447.html
Copyright © 2020-2023  润新知