javascript – 缩放元素的offset()

jQuery documentation for offset()状态:

Also, dimensions may be incorrect when the page is zoomed by the user; browsers do not expose an API to detect this condition.

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

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

谢谢.

最佳答案 我遇到了同样的问题并找到了解决方法.

您需要一个零偏移的根子元素才能使其工作.

$.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;
    }
}
点赞