jQuery 偏移量在某些页面上计算不正确

jQuery offset is not calculating correctly on some pages

本文关键字:计算 不正确 偏移量 jQuery      更新时间:2023-09-26

我正在使用jQuery offset().top从文档窗口顶部计算超链接的像素,以便在悬停时,工具提示可以出现在其上方。

默认情况下,工具提示的 css 的绝对位置为前 0 和左 0。当链接悬停时,它会从文档顶部计算其位置,并将其用作工具提示的 css 顶部位置。

问题是,在某些页面上,

偏移量可以完美地计算链接的位置,而在另一些页面上,偏移量大约是 50 像素太多了。我不知道为什么。

$(".tiptrigger").mouseenter(function() { 
    var s_id = $(this).attr('id');
    var calc = $(this).offset().top; 
    $("#tip-"+s_id).css({"margin-top": calc+"px"});
});
而不是

absolute尝试将fixed用于弹出元素。如果你没有任何不必要的填充应用于body,那么 offset().top 应该可以工作

如果仍然不准确而不是 .offset().top 给一个机会 https://developer.mozilla.org/en-US/docs/Web/API/element.getBoundingClientRect

.offset()有以下限制:

注意:jQuery 不支持获取隐藏元素的偏移坐标,也不支持考虑在正文元素上设置的边框、边距或填充。

所以你的jQuery可能是正确的,但是如果你的身体上有一些填充/边距,你会遇到不正确的偏移量。删除它或将其包含在计算中:

var bodyOffset = $('body').css("margin-top") + $('body').css('padding-top') + $('body').css('border-top');
var calc = $(this).offset().top + bodyOffset;