jQuery .offset()在每个浏览器中都无法正常工作

时间:2014-08-13 15:37:22

标签: javascript jquery

我定义了这些变量:

var about = 0;
var music = $('.music-main').offset();
var programming = $('.programming-main').offset();
var contact = $('.contact-main').offset();

然后尝试在按钮点击时动画滚动到我页面上的特定部分。

 case 0: $("html, body").animate({ scrollTop: 0}); break;
 case 1: $("html, body").animate({ scrollTop: music.top}); break;
 case 2: $("html, body").animate({ scrollTop: programming.top}); break;
 case 3: $("html, body").animate({ scrollTop: contact.top}); break;

但它会滚动到其他位置。它甚至可以滚动到每个元素的不同位置。

1 个答案:

答案 0 :(得分:0)

确保仅在页面加载后调用偏移量,否则坐标将不正确。

所以做这样的事情:

$( window ).load(function() {
  var about = 0;
  var music = $('.music-main').offset();
  var programming = $('.programming-main').offset();
  var contact = $('.contact-main').offset();
}

在点击时计算偏移量会更好,因此加载和点击之间页面大小的变化不会产生任何影响:

var about = 0;
var music = $('.music-main');
var programming = $('.programming-main');
var contact = $('.contact-main');

case 0: $("html, body").animate({ scrollTop: 0}); break;
case 1: $("html, body").animate({ scrollTop: music.offset().top}); break;
case 2: $("html, body").animate({ scrollTop: programming.offset().top}); break;
case 3: $("html, body").animate({ scrollTop: contact.offset().top}); break;