缩放元素的offset()

时间:2015-12-17 15:11:29

标签: javascript jquery css

offset()州的

jQuery documentation

  

此外,当用户缩放页面时,尺寸可能不正确;浏览器不公开API来检测这种情况。

但是,使用spread来缩放页面内容时,有没有办法计算触控环境浏览器中的正确偏移?

我创建了一个展示问题的小样本:https://jsfiddle.net/dhykgsmp/4/(在Chrome中打开)。请向下滚动并单击放大。自动完成输入的偏移量是错误的。

谢谢。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题并找到了解决方法。 您需要一个零偏移的根子元素才能使其正常工作。

$.fn.oldOffset = $.fn.offset;
$.fn.offset = function () {

    var c = $.fn.oldOffset.apply(this, arguments);

    // root child element with zero offset
    var wrc = $('body').children().first().oldOffset();

    var needToFix = wrc.left > 0 || wrc.top > 0;
    if (needToFix) {
        return {
            left: c.left - wrc.left,
            top: c.top - wrc.top
        };
    } else {
        return c;
    }
}

答案 1 :(得分:0)

我不确定此代码的预期功能是什么,但是如果您希望将'autocomplete input'元素相对于'autocomplete容器'定位,我建议使用.style.top属性,或者使用Element.getBoundingClientRect()获取位置,并在positionDropdown()函数中相应地设置位置。