返回頂部的js實現(jQuery/MooTools)

一、引言

在web頁面中,如果頁面較高,爲了方便用戶快速地返回頂部,都會添加一個返回頂部按鈕。例如:
各網站返回頂部功能各網站返回頂部功能各網站返回頂部功能截圖

其中淘寶網的是要滾動條的滾動距離大於某一段距離才顯示返回頂部按鈕;人人網的返回頂部直接在底部的工具條上;新浪微博的返回頂部在滾動高度大於0的時候顯示,且返回頂部的效果是平滑動畫效果。本文的實現就是類似於新浪微博的這種效果。//zxx:新浪微博今天啓用新域名weibo.com了

二、jQuery下的返回頂部功能

您可以狠狠地點擊這裏:jQuery下的返回頂部demo

可以看到,如果頁面有滾動高度,右下角就會有一個含有“返回頂部”字樣的黑色背景半透明的小條條,如下圖所示:
demo頁面效果截圖

點擊這裏“返回頂部”字樣的按鈕後,頁面就像是抹了潤滑劑一樣,倏地一聲就滑到頂部了,同時,該點擊按鈕也玩起了躲貓貓 – 不見了。

實現的原理嘛,恩……估計鮮有人關心,所以我也懶得浪費口水了,直接上代碼。

無論是這裏的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);
}

js相關代碼如下:

(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+。

三、MooTools下返回頂部功能實現

您可以狠狠地點擊這裏:MooTools下的返回頂部demo

demo頁面的效果與上面jQuery demo下效果基本一致。

代碼部分。CSS代碼完全同上。JS代碼如下:

(function() {
    var $backToTopTxt = "返回頂部", $backToTopEle = new Element("div", {
        "class": "backToTop",
        title: $backToTopTxt
    }).set("text", $backToTopTxt).addEvent("click", function() {
        var st = document.getScroll().y, speed = st / 6;
        var funScroll = function() {
            st -= speed;
            if (st <= 0) { st = 0; }
            window.scrollTo(0, st);
            if (st > 0) { setTimeout(funScroll, 20); }
        };
        funScroll();
    }).inject(document.body), $backToTopFun = function() {
        var st = document.getScroll().y, winh = window.getSize().y;
        (st > 0)? $backToTopEle.setStyle("display", "block"): $backToTopEle.setStyle("display", "none");
        //IE6下的定位
        if (!window.XMLHttpRequest) {
            $backToTopEle.setStyle("top", st + winh - 166);
        }
    };
    window.addEvents({
        scroll: $backToTopFun,
        domready: $backToTopFun
    });
})();

直接拷貝上面的代碼在您的JS代碼中就輕鬆實現效果啦。

MooTools的動畫方法Fx不支持滾動,要實現滾動條的平滑滾動效果需要使用Fx.Scroll插件。但是,顯然, 這裏的簡單功能沒有必要再使用額外的插件,所以直接設置了個定時器實現了平滑滾動效果。

注:demo頁面中的美女圖片作用是撐開頁面高度使產生滾動條。

本文算是個實用小技術,內容不多,希望能對您的學習有所幫助。感謝閱讀。

轉自張鑫旭-鑫空間-鑫生活

原文地址:http://www.zhangxinxu.com/wordpress/?p=1576

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章