• 如何为自己的网页实现一个“回到顶部”的链接?


    引子

    “回到顶部”是目前内容比较多的网页常用的解决方式,能快速让用户回到页面的顶端。比如我经常去的旅游网站——马蜂窝,就有一个非常不错的“回到顶部”快捷按钮或者叫链接,特别喜欢这个火箭的图片,“回到顶部”不就是让用户像火箭一样快地返回地球(Top)么?

    目前网络上有各种各样的样式,就像这个多元的世界,萝卜白菜,各有所爱,不信请看下图(此图来自度娘):

    这篇文章主要是想讨论一下目前比较常见的“回到顶部”功能的解决方案。

    开门见山

    “回到顶部“(Back to Top)其实就是通过锚点(anchor)和链接(links)来实现在页内跳转。

    的定义是节点的内容的某个区域可以是链接的目标或源。锚点就像普通链接的目标,唯一不同的是一个在页面内部的某一区域,一个是外部页面。 没有什么内容,直接看W3C School上的教程

    下面是一个简单的锚点应用的例子:

    一个最原始的例子

    有了上面的理论基础,我们就可以开始尝试在我们的页面实现一个最简单的“回到顶端”。 大概的实现过程就是:

    1. 在页面最顶端定义一个锚点。
    2. 在页面的其他地方(页底或页面的任何地方)定义一个指向这个锚点的链接。
    3. 点击链接回到页面顶端(Back to Top)。

    下面的例子就是一个具有最简单“回到顶端”功能的页面:

    当然,上面的例子没有太多样式,只是简单的呈现出文字,你可以给“回到顶端”这个链接添加任何你想要的效果。

    利用JQuery实现“回到顶部”

    JQuery是目前最火的Javascript脚本库,由于其轻量这个特点,被广泛使用于各种网站中。 本节主要介绍如何用JQuery来实现一个“返回顶端”的按钮。

    基础准备

    假如我们有这样一个简单的页面:

    HTML:

    <div class="container">
        <div class="content"></div>
    </div>
    

    CSS:

    .container {
        width:80%;
        margin:0 auto;
        height:auto;
        min-height:100%;
        position:relative;
    }
    .content {
        padding: 10px;
        margin: 20px;
        border: 2px solid #777777;
    }
    p#goToTop {
        position:fixed;
        bottom:15px;
        right:15px;
        z-index: 99;
    }
    p#goToTop a {
        text-align:center;
        text-decoration:none;
        display:block;
        width:36px;
        z-index: 99;
    }
    p#goToTop a span {
        background: url("http://images.cnblogs.com/cnblogs_com/EasonWu/201944/o_m-gotop.png") no-repeat scroll left top rgba(0, 0, 0, 0);
        display:block;
        height: 96px;
        width: 36px;
    }
    #goToTop a:hover span {
        background-position: right top;
    }
    

    Image:

    Background

    你也许会发现,我们这里的HTML页面结构里面,既没有设置锚点的代码,也看不到“返回顶端”的链接。 难道有问题?其实不然,请出大神JQuery。

    JQuery Code:

    $(function () {
        var topPosition = "<div id='top'></div>"; //定义顶部锚点的标签
        var goToTopButton = "<p id='goToTop'><a href='#top'><span></span></a></p>"; //定义按钮标签
        $("div.container").prepend(topPosition); //在container的div最前面加上锚点标签
        $("div.container").append(goToTopButton); //在container的div最后面加上按钮标签
        $("#goToTop").hide(); //首先将#goToTop隐藏
        //当滚动条的位置处于距顶部100像素以下时,跳转链接出现,否则消失
        $(function () {
            $(window).scroll(function () {
                if ($(window).scrollTop() > 100) {
                    $("#goToTop").fadeIn(1500);
                } else {
                    $("#goToTop").fadeOut(1500);
                }
            }); //当点击跳转链接后,回到页面顶部位置
            $("#goToTop").click(function () {
                $('body,html').animate({
                    scrollTop: 0
                }, 1000);
                return false;
            });
        });
    });
    

    代码演示

    编写一个简单的JQuery插件

    针对上面的例子,我们可以尝试着将其改写成一个JQuery的插件。 因为水平有限,这个只做抛砖引玉之用。

    // 编写一个插件叫做goToTop
    jQuery.fn.goToTop = function (settings) {
        settings = jQuery.extend({
            min: 100, //设置距离顶部的最小值为100
            fadeSpeed: 200, //设置一个淡出淡入的速度
            ieOffset: 120 //处理IE的兼容问题
        }, settings);
    
        return this.each(function () {
            //listen for scroll
            var el = $(this);
            //in case the user forgot
            el.css("display", "none");
            $(window).scroll(function () {
                /* stupid IE < 9 hack
                if (!jQuery.support.hrefNormalized) {//设置这个按钮的css属性
                    el.css({
                        "position": "absolute",
                        "top": $(window).scrollTop() + $(window).height() - settings.ieOffset
                    });
                } */
    
                if ($(window).scrollTop() >= settings.min) {
                    el.fadeIn(settings.fadeSpeed);
                } else {
                    el.fadeOut(settings.fadeSpeed);
                }
            });
        });
    };
    
    $(function () {
        var topPosition = "<div id='top'></div>"; //定义顶部锚点的标签
        var goToTopButton = "<p id='goToTop'><a href='#top'><span></span></a></p>"; //定义按钮标签
        $("div.container").prepend(topPosition); //在container的div最前面加上锚点标签
        $("div.container").append(goToTopButton); //在container的div最后面加上按钮标签
    
        if ($(window).scrollTop() < 1) {
            $("#goToTop").hide(); //滚动条距离顶端的距离小于showDistance是隐藏goToTop按钮
        }
    
        $("#goToTop").goToTop({
            min: 1,
            fadeSpeed: 1500
        });
    
        $("#goToTop").click(function (e) {
            //当点击跳转链接后,回到页面顶部位置
            e.preventDefault();
            $("html,body").animate({
                scrollTop: 0
            }, 1000);
        });
    });
    

    插件版演示:

    这里有一外国大牛的GotoTop插件: UItoTop jQuery Plugin, 有兴趣的可以研究一下。

    其他jQuery版返回顶端(Back to Top)链接的方法

    这里主要介绍几个一篇博客中介绍的jQuery版解决方法。 10 jQuery Back To Top Link Solutions For Websites

    资源共享

    参考文献

  • 相关阅读:
    pyqt中使用matplotlib绘制动态曲线 – pythonic
    pyqt开发教程-搭建环境和开发示例
    QPointer很大程度上避免了野指针(使用if语句判断即可,类似于dynamic_cast),而且使用非常方便 good
    qt5集成libcurl实现tftp和ftp的方法一:搭建环境(五篇文章)
    终于懂了:两个UI组件同时在操作是不可能实现的
    c/s 自动升级(WebService)
    web form中自定义HttpHandler仿mvc
    eclipse plugin 导出插件包
    TaskTracker执行map或reduce任务的过程2
    Jquery多级菜单插件Slimmenu使用说明
  • 原文地址:https://www.cnblogs.com/EasonWu/p/howto-create-back-to-top-link-for-webpage.html
Copyright © 2020-2023  润新知