页面回到顶部的实现及原理

转自:http://www.mojidong.com/html/css/js/2013/03/03/page-top-to-achieve/

现在很多网页都有一个回到顶部的功能,当你拖动滚动条往下拉到一定程度就会在右下方显示一个回到顶部的按钮,点击则可以立即回到页面顶部,非常贴心的设计。

今天打算自己做一个,分析了一下,要点如下

  • 监听当前页面滚动事件
  • 当滚动到一定像素显示回到顶部的按钮
  • 给回到顶部按钮绑定点击事件,点击按钮让滚动条回到顶部并隐藏按钮

核心点主要在js控制按钮的显示和隐藏及点击按钮回到顶部及如何控制回到顶部按钮不随文档滚动

js伪代码如下

//绑定页面滚动事件
$(document).bind(‘scroll‘,function(){
    var len=$(this).scrollTop()
    if(len>=100){
        //显示回到顶部按钮
    }else{
        //隐藏回到顶部按钮
    }
})
//绑定回到顶部按钮的点击事件
$(‘#回到顶部‘).click(function(){
    //动画效果,平滑滚动回到顶部
    $(document).animate({ scrollTop: 0 });
    //不需要动画则直接回到顶部
    //$(document).scrollTop(0)
})

让按钮不随文档滚动需要使用到css属性position

static:无特殊定位,对象遵循正常文档流。top,right,bottom,left等属性不会被应用。

relative:对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。

absolute:对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z-index属性定义。

fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。IE6及以下不支持此参数值

很明显我们需要fixed(ie6真是蛋疼)



思路有了就写测试代码

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>回到顶部demo</title>
        <style type="text/css">
            .up{
                position:fixed;
                bottom:20px;
                right:20px;
                width:10px;
                display:none;
            }
        </style>
    </head>
    <body>
        <div style="background:rgb(200,200,200);height:2000px;">我很长</div>
        <a id="up" href="javascript:;" class="up">回到顶部</a>
    </body>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript">
        //绑定页面滚动事件
        $(document).bind(‘scroll‘,function(){
            var len=$(this).scrollTop()
            if(len>=100){
                //显示回到顶部按钮
                $(‘#up‘).show();
            }else{
                //影藏回到顶部按钮
                $(‘#up‘).hide();
            }
        })
        //绑定回到顶部按钮的点击事件
        $(‘#up‘).click(function(){
            //动画效果,平滑滚动回到顶部
            $(document).animate({ scrollTop: 0 });
            //不需要动画则直接
            //$(document).scrollTop(0)
        })
    </script>
</html>

测试结果不是很令人满意,拖动滚动条按钮是显示出来了,但是点击却没有回到顶部。

原来问题出在滚动操作的对象上,将document换成body

//绑定回到顶部按钮的点击事件
$(‘#up‘).click(function(){
    //动画效果,平滑滚动回到顶部
    $(‘body‘).animate({ scrollTop: 0 });
    //不需要动画则直接
    //$(‘body‘).scrollTop(0)
})

测试一切ok

以为这样就完了,你太天真了少年

浏览器兼容,攻城师心中永远的痛~

代码在ie上不给力,滚动显示不了按钮,滚到底都显示不出来,崩溃。

原来事件要绑在window

//绑定页面滚动事件
$(window).bind(‘scroll‘,function(){
    var len=$(this).scrollTop()
    if(len>=100){
        //显示回到顶部按钮
        $(‘#up‘).show();
    }else{
        //影藏回到顶部按钮
        $(‘#up‘).hide();
    }
})

上最终代码

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>回到顶部demo</title>
        <style type="text/css">
            .up{
                position:fixed;
                bottom:20px;
                right:20px;
                width:10px;
                display:none;
            }
        </style>
    </head>
    <body>
        <div style="background:rgb(200,200,200);height:2000px;">我很长</div>
        <a id="up" href="javascript:;" class="up">回到顶部</a>
    </body>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript">
        //绑定页面滚动事件
        $(window).bind(‘scroll‘,function(){
            var len=$(this).scrollTop()
            if(len>=100){
                //显示回到顶部按钮
                $(‘#up‘).show();
            }else{
                //影藏回到顶部按钮
                $(‘#up‘).hide();
            }
        })
        //绑定回到顶部按钮的点击事件
        $(‘#up‘).click(function(){
            //动画效果,平滑滚动回到顶部
            $(document).animate({ scrollTop: 0 });
            //不需要动画则直接
            //$(document).scrollTop(0)
        })
    </script>
</html>
时间: 2024-11-10 14:33:06

页面回到顶部的实现及原理的相关文章

js——页面回到顶部

很久都没有去慕课网学习学习了,刚恰好就看见了一个用的比较多的小例子——页面回到顶部,记得之前自己也是在初学web时,被这个坑了一回,因此今天特地拿来分享分享…… <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>页面回到顶部</title> <link rel="stylesheet&quo

【JQ+锚标记实现点击页面回到顶部】

前言:今天想写个页面常用到的[点击回到页面顶部或是首页的功能],生活和职场一样,总会有低谷的时候,这个时候咱也别怂.别怂.别怂,说三遍!那都不是事,工作没了,再找呗,就像我上周五,团队解散那天,我是笑着走的,还给小白挥了挥手,微笑一个.那句话叫什么来着,佛祖虽给你关了一扇门,说不定会再给你开一扇窗.明天我就换工作了,我感谢我的同学. a)下面看看实现,实现很简单,通过JQ判断滚动条向下滚动的长度大于多少时显示[回到顶部+回到首页]的图标(换一种理解:滚动条顶端距离页面顶部的距离),另外一种实现方

页面回到顶部

js代码: function pageScroll(){ //把内容滚动指定的像素数(第一个参数是向右滚动的像素数,第二个参数是向下滚动的像素数) window.scrollBy(0,-100); //延时递归调用,模拟滚动向上效果 scrolldelay = setTimeout('pageScroll()',100); //获取scrollTop值,声明了DTD的标准网页取document.documentElement.scrollTop,否则取document.body.scrollTo

jQuery-使页面回到顶部

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 6 <title>back-top</title> 7 <style type=&qu

使用 jQuery 页面回到顶部

function backTop() { $(window).scroll(function () { if ($(window).scrollTop() > 100) { $("#topImg").fadeIn(1000); } else { $("#topImg").fadeOut(1000); } }); //当点击跳转链接后,回到页面顶部位置 $("#topImg").click(function () { //考虑到兼容性使用 b

JS实现页面回到顶部效果

[代码] 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>home</title> 6 </head> 7 <style> 8 *{ 9 padding:0; 10 margin:0; 11 } 12 .box{ 13 width:1190px; /*只有设置了

页面回到顶部的三种实现(锚标记,js)

本文不再介绍,大家根据自己需要选择其中的一种即可,总之简约最美的,能减少代码就减少代码,能不调用的就别调用,要不是天缘博客的文章都是牛长也不会添加这个功能. 本文介绍三款简单的返回页面顶部代码,可以使用简单的HTML(http://www.jb51.net/web/62651.html) 锚标记,也可使用Javascript Scroll (http://www.jb51.net/article/31422.htm) 函数动态返回,其它的还有悬浮脚本等有点复杂了,本文不再介绍,大家根据自己需要选

回到顶部效果

<style> .box { width: 1190px; margin: 0 auto; } #btn { width: 40px; height: 40px; background: url(images.png) no-repeat left top;//回到顶部的小箭头 position: fixed; left: 50%; margin-left: 600px; bottom: 30px; display: none; } #btn:hover { background: url(i

回到顶部bug

参考自一博客(https://www.cnblogs.com/abao0/p/6642288.html)内有慕课网教程(后发现有bug, 弃置不用了) 以下有问题, 当滚动条处于顶部时, 刷新页面, 回到顶部icon依然会出现. //Page loading trigger window.onload = function () { var oscrollBtn = document.getElementById('scrollBtn'); var timer = null; var isTop