有时候,博客文章太长,需要返回顶部时,需要用鼠标拖着滚动条向上好半天,这里提供一个用 jQuery 来实现的动态上滚的示例。这个示例完全参考和翻译自 webdesignerwall 的 blog:http://webdesignerwall.com/tutorials/animated-scroll-to-top,其中有部分删改,并在本人的 blog 上实现。

主要包含HTML和CSS的设计,基于jQuery的JS的设计。另外还有一点小trick

Design & CSS

相关的 HTML 代码很简单,在source/_include/custom/footer.html中添加如下代码:

<p id = "back-top">
    <a href="#top"><span></span>Back to Top</a>
</p>

对应的 CSS 样式的设置如下:(这段代码同样的放在source/_include/custom/footer.html文件中)

<style type="text/css">
#back-top {
    position: fixed;
    bottom: 50px;
    right: 100px;
}

#back-top a {
    width: 80px;
    display: block;
    text-align: center;
    font: 11px/100% Arial, Helvetica, sans-serif;
    text-transform: uppercase;
    text-decoration: none;
    color: #bbb;

    /* transition */
    -webkit-transition: 1s;
    -moz-transition: 1s;
    transition: 1s;
}
#back-top a:hover {
    color: #000;
}

/* arrow icon (span tag) */
#back-top span {
    width: 80px;
    height: 80px;
    display: block;
    margin-bottom: 7px;
    background: #ddd url(../../images/up-arrow.png) no-repeat center center;

    /* rounded corners */
    -webkit-border-radius: 15px;
    -moz-border-radius: 15px;
    border-radius: 15px;

    /* transition */
    -webkit-transition: 1s;
    -moz-transition: 1s;
    transition: 1s;
}
/*
#back-top a:hover span {
    background-color: #888;
}
*/
</style>

上面的 css 中用到了一张图片up-arrow.png,放在source/images/目录下,图片如下:

这是从google image里面随便找的一个,你也可以找一个自己喜欢的图片。

jQuery部分

HTML 和 CSS 样式设置好了之后,最后就是添加 JavaScript 事件响应代码了,这里是基于 jQuery 实现的。代码如下:(这段代码还是放在source/_include/custom/footer.html文件中)

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    // hide #back-top first
    $("#back-top").hide();

    // fade in #back-top
    $(function () {
        $(window).scroll(function () {
            if ($(this).scrollTop() > 100) {
                $('#back-top').fadeIn();
            } else {
                $('#back-top').fadeOut();
            }
        });

        // scroll body to 0px on click
        $('#back-top a').click(function () {
            $('body,html').animate({
                scrollTop: 0
            }, 800);
            return false;
        });
    });

});
</script>

一个Trick

在上面的HTML代码中,我们将一个链接添加到了ID为 #top 的里面,这个 #top 标签是 <body> 标签的ID,这样即使浏览器不支持相关的JS,通过这个link也实现了返回顶部的功能。

Original Link: http://ibillxia.github.io/blog/2013/06/30/add-a-back-to-top-button-on-ur-octpress-blog/
Attribution - NON-Commercial - ShareAlike - Copyright © Bill Xia