首页 > 其他 > 详细

锚点的animate使用过程中定位不准确的问题小记

时间:2019-02-13 16:45:05      阅读:197      评论:0      收藏:0      [点我收藏+]

 

源码:

$(‘html, body, .S‘).animate({ scrollTop: $(‘.a1‘).offset().top - 133}, { duration: 1500, easing: "swing" });

bug描述1:当滚动的主体不是body时,容易出现滚动不精确的问题

原因1:$(‘html, body, .S‘)包含了3个dom,一旦出现再有一个外层滚动条时,找不到最内层;并且$(‘html body .S .S1‘).offset().top也会被移动到-133

修改1:改成$(‘html body .S .S1‘)只包含S1,可准确获取到Dom; 并且每次跳转后将  $(‘html body .S .S1‘).offset().top 赋值为0;

 

bug描述2:基于修改1,出现点击第一次锚点时候定位准确,但是第二次时候就回到第一个了

原因2:第一次点击a1时,$(‘.a1‘).offset().top是正数,并且原点为0;,但是第二次点击a2时,原点不为0,并且此时$(‘.a2‘).offset().top与原点的差值可能为负数或者其他数值,不等于应有的top值;;也就是说,$(‘.a‘).offset().top的值是一个动态值

修改2:改成$(‘.a‘)[0].offsetTop

 

 

总修改:

1         var top_height = $(‘.a1‘)[0].offsetTop;
2         $(‘html body .S .S1‘).animate({scrollTop: top_height - 133}, { duration: 500, easing: "swing" });
3         $(‘html body .S .S1‘).offset().top = 0;

 

锚点的animate使用过程中定位不准确的问题小记

原文:https://www.cnblogs.com/JWXS/p/10370331.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!