0

我有一个绝对定位的 div,最初是不可见的,它显示在被单击的元素的位置,呈现其预览(预览的顶部位置与单击的元素的顶部对齐)。当被单击的元素位置较低时,预览会呈现在原始页面边框下方,并且需要滚动。我想向上移动预览以使其底部边缘位于上一页的底部限制。问题是我使用的代码没有返回页面高度的预期值(它大于预览高度和单击元素顶部位置的总和)。

这是代码:文件1:

jQuery('elementClicked').live('click',function(){
...
jQuery("previewDiv").setTopAtClickedElement(jQuery(this));
...

}

文件 2:

jQuery.fn.setTopAtClickedElement = function (element) {
//original positioning    
this.css('top', element.offset().top + 'px');

// the troublesome part where the eventual correction should be done
if (element.offset().top + this.height() > jQuery(document).height())
{
    this.css('top', jQuery(document).height() - this.height() + 'px');
}

}

当我按照建议使用 Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight) 测量文档高度时,也会发生类似情况关联

你对我应该如何实现这个麻烦的代码部分有什么建议吗?

如果我说的不够清楚,请指出,谢谢

4

1 回答 1

0

而不是.height()尝试使用 jQuery 的outer.height() - api docs,它将考虑您在页面上拥有的任何填充(以及可选的marign)。

jsfiddle 或 codepen 将帮助我们解决您的问题。

于 2013-01-04T22:36:43.853 回答