Javascript 当div内容位于视口外部时滚动

Javascript 当div内容位于视口外部时滚动,javascript,jquery,viewport,scrollto,Javascript,Jquery,Viewport,Scrollto,我有这样一段简单的代码 我想要的是,当用户点击列表中最后的一些元素来显示内容时 $('a.showMeThis').click(function() { $(this).next('.content').slideToggle('fast', function() { // there's go all the magic }); }); 并且它在视口之外(部分或全部)-滚动div的高度,这样他就可以看到所有内容 我一直在寻找这方面的一些逻辑,玩弄position(

我有这样一段简单的代码

我想要的是,当用户点击列表中最后的一些元素来显示内容时

$('a.showMeThis').click(function() {
   $(this).next('.content').slideToggle('fast', function() {
       // there's go all the magic
   });
});
并且它在视口之外(部分或全部)-滚动div的高度,这样他就可以看到所有内容

我一直在寻找这方面的一些逻辑,玩弄position().top、window.innerHeight等等,但它从来没有按照我想要的方式运行

希望你们能帮助我,保重,祝你们有一个愉快的一天

使用和


在OP的评论后更新

使用及


在OP的评论后更新


在这种情况下,它看起来是这样的:

我认为,这段代码足以理解逻辑=)


UPD:注意,您应该插入
并返回false进入
。单击
事件以防止跳转到
#
锚定

在这种情况下,它看起来是这样的:

我认为,这段代码足以理解逻辑=)


UPD:注意,您应该插入
并返回false进入
。单击
事件以防止跳转到
#
锚定

是的,但我需要一个条件-当它离开视口时,动画(滚动),而不是在所有情况下,只有当.content离开视口时。对于这种情况,是
document.documentElement.clientHeight
那里?@morodeer For
IEStill没有。您正在尝试获取高度
$this
,但应获取高度
$this。下一步('.content')
是的,但我需要一个条件-当它超出视口时,动画(滚动),而不是在所有情况下,仅当.content离开视口时。在这种情况下,
document.documentElement.clientHeight
在那里?@morodeer For
IEStill不在那里。您正在尝试获取高度
$this
,但应获取高度
$this.next('.content')
$('a.showMeThis').click(function () {
    var $this = $(this);
    $this.next('.content').slideToggle('fast', function () {
        $('html,body').animate({
            scrollTop: $this.offset().top
        }, 'slow');
    });
});
$('a.showMeThis').click(function () {
    var $this = $(this);
    $this.next('.content').slideToggle('fast', function () {
        if ($this.position()) {
            if ($this.position().top + $this.height() > $(window).scrollTop() + (window.innerHeight || document.documentElement.clientHeight)) {
                $('html,body').animate({
                    scrollTop: $this.position().top - (window.innerHeight || document.documentElement.clientHeight) + $this.height() + 15 + $this.next('.content').height()
                }, 100);
            }
        }
    });
});
if ($(this).parent().offset().top + $(this).height() > window.innerHeight + $(window).scrollTop())
          {
              var a = $(this)
              $('html,body').animate({scrollTop: $(a).parent().offset().top})
          }