在JQuery中,slideDown()方法也可以向下滚动页面吗?

在JQuery中,slideDown()方法也可以向下滚动页面吗?,jquery,Jquery,应用于div的slideDown会执行slideDown操作,但不会向下滚动页面,并且div slided down div仍然隐藏在视图之外。是否有方法向下滚动页面,以便用户可以查看div?快速演示 基本上你只需要 $('html, body').animate({ scrollTop: $('#yourDiv').offset().top }, 3000); $.extend($.expr[':']{ 查看:功能(a){ var st=(document.docum

应用于div的slideDown会执行slideDown操作,但不会向下滚动页面,并且div slided down div仍然隐藏在视图之外。是否有方法向下滚动页面,以便用户可以查看div?

快速演示

基本上你只需要

 $('html, body').animate({ 
      scrollTop: $('#yourDiv').offset().top 
  }, 3000); 
$.extend($.expr[':']{
查看:功能(a){
var st=(document.documentElement.scrollTop | | document.body.scrollTop),
ot=$(a).offset().top,
wh=(window.innerHeight&&window.innerHeight<$(window.height())?window.innerHeight:$(window.height();
返回ot>st&($(a).height()+ot)<(st+wh);
}
});
如果($('#whatever')。是(':not(:inView)')){
$('html,body')。设置动画({
scrollTop:$('#随便什么').offset().top
}, 3000);
}

是的,这似乎有效。但如果再次单击,则会使页面猛拉,并尝试再次设置动画。有没有办法检查div是否已经可见并且没有动画?但是作为另一个Q可能更好@Daud:快速跳跃让用户感到困惑。动画滚动是更好的可用性。当元素已经可见时,也不会进行滚动…下面是一个JSFIDLE,它展示了如何使用此解决方案,并完全回调
slidedown
:您可能对一个通用的jQuery插件感兴趣,该插件可以进行动画滚动(当元素可见时,也不会滚动)它类似于scrollTo插件,但更简单(因此更快)
$.extend($.expr[':'],{
    inView: function(a) {
        var st = (document.documentElement.scrollTop || document.body.scrollTop),
            ot = $(a).offset().top,
            wh = (window.innerHeight && window.innerHeight < $(window).height()) ? window.innerHeight : $(window).height();
        return ot > st && ($(a).height() + ot) < (st + wh);
    }
});

if ($('#whatever').is(':not(:inView)')) {
    $('html,body').animate({ 
         scrollTop: $('#whatever').offset().top 
    }, 3000);
}