jquery锚应该在中间

时间:2012-02-01 19:47:46

标签: javascript html5 jquery

我使用以下代码专注于点击时的锚点

$('#mydiv').click(function() {
  location.href="#blah";
});

它确实专注于那个锚点,但问题是锚点的一部分朝向屏幕顶部。有没有办法让我把它放在中间? 感谢

2 个答案:

答案 0 :(得分:2)

我认为你只需得到锚定位置,窗口大小。然后您可以滚动到所需的位置。

        $('#mydiv').click(function (e) {
            e.preventDefault(); // to prevent default anchor behaviour
            var target_offset_top = $("#blah").offset().top;
            var window_height = document.body.clientHeight;
            $('html,body').animate({scrollTop: target_offset_top - window_height/2});
        });

答案 1 :(得分:2)

以下是我过去所做的事情:

基本上,您可以测量窗口的高度和div的位置,并滚动到将div放在屏幕中心的点。

$('#mydiv').click(function(e) {

  e.preventDefault();

  location.href="#blah";

  var windowHeight = $(window).height();
  var elementHeight = $("#blah").height();

  var elementPosition = $("#blah").position();
  var elementTop = elementPosition.top;

  var toScroll = (windowHeight / 2) - (elementHeight / 2);

  window.scroll(0,(elementTop - toScroll));
});