1

我正在使用 jQueryoffset().top从文档窗口的顶部计算超链接的像素,这样当悬停时,工具提示就会出现在它的上方。

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

问题是在某些页面上,offset 正在完美地计算链接的位置,而在其他页面上,它太多了大约 50 个像素。我不知道为什么。

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

2 回答 2

0

.offset()有这个限制

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

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

var bodyOffset = $('body').css("margin-top") + $('body').css('padding-top') + $('body').css('border-top');
var calc = $(this).offset().top + bodyOffset; 
于 2013-11-06T12:37:29.833 回答
0

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

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

于 2013-11-06T12:38:45.863 回答