Javascript 显示隐藏div并平滑滚动到隐藏div内的定位点

Javascript 显示隐藏div并平滑滚动到隐藏div内的定位点,javascript,jquery,scroll,show-hide,Javascript,Jquery,Scroll,Show Hide,我有很多隐藏的div(在正常的站点布局中),我一次只显示一个,并且在所有情况下屏幕都会滚动到那些特定的div。这段代码运行得很好,但我希望它打开隐藏的div并滚动到该div中的锚点 我似乎不能忘恩负义,因为这一切都是由我完成的。在这种情况下,它将只到达隐藏div的顶部 var holder = ""; function toggleDiv(id) { if (holder != "") { document.getElementById(holder).style.display

我有很多隐藏的div(在正常的站点布局中),我一次只显示一个,并且在所有情况下屏幕都会滚动到那些特定的div。这段代码运行得很好,但我希望它打开隐藏的div并滚动到该div中的锚点

我似乎不能忘恩负义,因为这一切都是由我完成的。在这种情况下,它将只到达隐藏div的顶部

var holder = "";

function toggleDiv(id) {

  if (holder != "") {
    document.getElementById(holder).style.display = 'none';
  }

  document.getElementById(id).style.display = 'block';
  holder = id;

  var startY = currentYPosition();
  var stopY = elmYPosition(id);
  var distance = stopY > startY ? stopY - startY : startY - stopY;
  if (distance < 100) {
    scrollTo(0, stopY);
    return;
  }
  var speed = Math.round(distance / 100);
  if (speed >= 10) speed = 10;
  var step = Math.round(distance / 25);
  var leapY = stopY > startY ? startY + step : startY - step;
  var timer = 0;
  if (stopY > startY) {
    for (var i = startY; i < stopY; i += step) {
      setTimeout("window.scrollTo(0, " + leapY + ")", timer * speed);
      leapY += step;
      if (leapY > stopY) leapY = stopY;
      timer++;
    }
    return;
  }
  for (var i = startY; i > stopY; i -= step) {
    setTimeout("window.scrollTo(0, " + leapY + ")", timer * speed);
    leapY -= step;
    if (leapY < stopY) leapY = stopY;
    timer++;
  }

  return false;

}
因此,我真正想知道的是,我是否可以在其中引入任何命令,以允许它平滑/良好地滚动到锚定位置,而不只是跳转到锚定位置。
提前感谢。

您可以设置滚动动画:

$('html,body').animate({

    scrollTop: $('#yourTarget').offset().top

 }, 2000);

另外,您不能滚动到隐藏的div,因为当您实际应该使用
可见性:隐藏时,
display:none
会将其从DOM中删除,所以您仍然可以使用锚定。

我忘了提到,整个问题是使它能够很好地滚动,而不是跳转到锚定。欢迎使用。请编辑您的问题以添加信息。在一些人找不到的评论中,这几乎没有什么帮助。似乎您已经非常努力地做了几件jQuery可以做的事情。查看
show()
slideDown()
scrollTop()
的api文档。感谢isherwood,我已经尝试了这些方法好几天都没有成功,这是我找到的最成功的选择,这可能不是最好的选择,但我真的不介意保留它,如果有什么东西我可以介绍在那里,也将允许它顺利滚动到锚。有吗?伊舍伍德,我以前从未在这里提出过任何问题,我希望现在能有更多的人回答,我能做些什么来获得更多的建议/答案吗?请回复。嗨,slime,谢谢,使用我正在使用的代码,我可以滚动到任何隐藏的div,而不是隐藏div中的锚。他们需要有显示:没有,因为他们有大的内容,即使是隐藏的内容仍然会占据所有的空间。
$('html,body').animate({

    scrollTop: $('#yourTarget').offset().top

 }, 2000);