javascript - 如何使页面向下滚动,因为页脚 div 使用 slideDown 扩展得很大?

标签 javascript jquery html

我有一个默认显示为无的页脚区域。这个底部页脚区域包含菜单和社交链接等内容。

为了看到这个菜单,你向下滚动到页面的底部(一直滚动到底部,所以你不能再滚动了)。在那里,您会看到并单击一个显示“展开”的按钮。执行此操作后,包含内容的展开按钮下方的 div 将使用 slideDown() 进行动画处理。

问题是当页面向下滚动时,页面不会随着 div 的底部边缘滚动……所以乍一看似乎什么都没有发生,直到您意识到必须再向下滚动一点。我希望它以与动画完全相同的速度/长度自动滚动页面。

这里是点击函数

$('#footer-click a').click(function() {
    if ($('#footer-inner').css('display') === 'none') {
        $('#footer-click a').html('Hide');
        $('#footer-inner').slideDown('medium');
} else {
        $('#footer-click a').html('Expand');
        $('#footer-inner').slideUp('medium');
    }
return false;
});

最佳答案

您应该能够使用 scrollTop() 来滚动额外的距离:

$('#footer-click a').click(function() {
    if ($('#footer-inner').css('display') === 'none') {
        $('#footer-click a').html('Hide');
        $('#footer-inner').slideDown('medium', function() {
            $('html').scrollTop( $('html').scrollTop() + $('#footer-inner').outerHeight() );
        });
    } else {
        $('#footer-click a').html('Expand');
        $('#footer-inner').slideUp('medium');
    }
    return false;
});

当然,这将使它在最后一次发生。您可能需要自定义动画以使其流畅。 (让我想想……)

编辑:好的,您可能想要做的只是show() 页脚,然后使用动画向下滚动页面。它给出了相同的效果。您可以像以前一样关闭它:

$(function() {
    $('#footer-click a').click(function() {
        if ($('#footer-inner').css('display') === 'none') {
            $('#footer-click a').html('Hide');
            $('#footer-inner').show();
            // Some browsers use html, some use body.  Use the bigger one:
            var scrollY = $('body').scrollTop()?$('body').scrollTop():$('html').scrollTop();
            $('html, body').animate({
                scrollTop: scrollY + $('#footer-inner').outerHeight()
            }, 'medium');
        } else {
            $('#footer-click a').html('Expand');
            $('#footer-inner').slideUp('medium');
        }
        return false;
    });
});

示例:http://jsfiddle.net/Eeq26/4/

如果页脚有可能不在最底部,您将需要一个 if..then 来检查 scrollTop() == 0 ,并在这种情况下使用 slideDown()

关于javascript - 如何使页面向下滚动,因为页脚 div 使用 slideDown 扩展得很大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9541130/

相关文章:

javascript - 如果检查输入,则将类应用于 <body>,而不使用 jQuery

JavaScript 与 IE6

javascript - 验证 3 个输入字段后按钮不会将我带到下一个 URL

javascript - 当我使用浏览器后退按钮时保持 javascript 更改(jquery,rails 3)

javascript - Ajax uploader 错误500

javascript - Knockout JS foreach 循环中的非重复元素

jquery - 如何在不与字母搜索插件冲突的 JQuery 数据表的 <td> 单元格中创建超链接?

jQuery 复选框问题

javascript - 如何在 JavaScript 中获取外部元素值

javascript - 如何在 html5 Canvas 中将圆圈作为单独的 Canvas 绘制?