粘性"回到顶部"在向下滚动之前显示页面加载的按钮

时间:2014-03-12 19:28:18

标签: javascript jquery css scroll jquery-animate

我按照教程获得了一个粘性的“返回顶部”按钮,一旦向下滚动就会出现。出于某种原因,在页面首次加载后,当您位于页面顶部时,它会显示。如果向下滚动,然后一直向上,它就会消失(应该如此)。但最初它表现不佳。有什么想法吗?

以下是我正在使用的实时页面,您可以在右下角看到它:http://willryan.us

HTML

<a href="#" class="go-top" style="display: inline;">Back to top</a>


<script>
        $(document).ready(function() {
            // Show or hide the sticky footer button
            $(window).scroll(function() {
                if ($(this).scrollTop() > 200) {
                    $('.go-top').fadeIn(500);
                } else {
                    $('.go-top').fadeOut(300);
                }
            });

            // Animate the scroll to top
            $('.go-top').click(function(event) {
                event.preventDefault();

                $('html, body').animate({scrollTop: 0}, 300);
            })
        });
    </script>

CSS

.go-top {
    position: fixed;
    bottom: 0.75em;
    right: 0.5em;
    text-decoration: none;
    color: white;
    background-color: rgba(0, 0, 0, 0.25);
    font-size: 12px;
    padding: 10px;
    display: none;
    margin: 0;
}

.go-top:hover {
    background-color: rgba(0, 0, 0, 0.6);
    color: white;
    text-decoration: none;
}

3 个答案:

答案 0 :(得分:12)

更改HTML
<a href="#" class="go-top" style="display: inline;">Back to top</a>

<a href="#" class="go-top" style="display: none;">Back to top</a>

这将首先隐藏您的按钮,直到您滚动。

答案 1 :(得分:6)

它正在显示,因为您还没有触发滚动事件,以使该逻辑运行以隐藏/显示它

<script>
    $(document).ready(function() {
        function checkPosition() {
            if ($(this).scrollTop() > 200) {
                $('.go-top').fadeIn(500);
            } else {
                $('.go-top').fadeOut(300);
            }
        }
        // Show or hide the sticky footer button
        $(window).scroll(checkPosition);

        // Animate the scroll to top
        $('.go-top').click(function(event) {
            event.preventDefault();

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

        checkPosition();
    });
</script>

这个新的重构器会在页面加载时至少触发checkPosition一次,以确保按钮淡出。另一种解决方案是在元素的CSS中设置display: none;,因此默认情况下它是隐藏的,之后只能通过javascript显示

答案 2 :(得分:1)

我用ntgCleaner用户说过并将html中的“display:inline”更改为“display:none”,它似乎有效。谢谢!