滚动到不与溢出一起工作的顶部脚本:滚动

Scroll to top script not working in conjunction with overflow:scroll

本文关键字:滚动 顶部 脚本 工作 一起 溢出      更新时间:2023-12-07

我写了这个滚动到顶部的脚本。一切都很好,但我在包装器div中应用了overflow:scroll。我需要overflow:scroll的原因是我有overflow:hidden for html/body标记。这对于我的自定义滚动条来说是必要的。我知道这会干扰这个脚本,但为什么呢?

这个剧本的部分效果很好。向下滚动时会出现"滚动到顶部",但单击后不会转到顶部。

我做错了什么?

这是Javascript:

<script>            
        jQuery(document).ready(function() {
            var offset = 220;
            var duration = 500;
            jQuery(window).scroll(function() {
                if (jQuery(this).scrollTop() > offset) {
                    jQuery('.back-to-top').fadeIn(duration);
                } else {
                    jQuery('.back-to-top').fadeOut(duration);
                }
            });
            jQuery('.back-to-top').click(function(event) {
                event.preventDefault();
                jQuery('#wrapper').animate({scrollTop: 0}, duration);
                return false;
            })
        });
    </script>

我的CSS

<style>
        .back-to-top {
            position: fixed;
            bottom: 2em;
            right: 0px;
            text-decoration: none;
            color: #000000;
            background-color: rgba(235, 235, 235, 0.80);
            font-size: 12px;
            padding: 1em;
            display: none;
        }
    </style>

最后是Html:

<a href="#" class="back-to-top">Back to Top</a>

您的问题在这里:

jQuery(window).scroll(function(){
    if (jQuery(this).scrollTop() > offset) { }
});

您要做的是检查"window"对象是否被滚动,以及当前的顶部偏移量是否大于"offset"变量,但随后您尝试在"#wrapper"内部滚动。

您应该做的是检查"#wrapper"是否被滚动,以及它是否达到了偏移量。

EDIT:如果你想滚动"window"对象,你应该像下面这样设置"body"DOM元素的动画;)

$('body').animate({scrollTop: 0}, duration);