Detect page zoom change with jQuery in Safari

后端 未结 3 1361
半阙折子戏
半阙折子戏 2020-11-30 05:01

I have a problem with Safari in a web application that contains a position:fixed element. When the page is zoomed out (smaller 100%) things break and would need to be fixed

3条回答
  •  余生分开走
    2020-11-30 06:00

    It's not a direct duplicate of this question since that deals with Mobile Safari, but the same solution will work.

    When you zoom in, window.innerWidth is adjusted, but document.documentElement.clientWidth is not, therefore:

    var zoom = document.documentElement.clientWidth / window.innerWidth;
    

    Furthermore, you should be able to use the onresize event handler (or jQuery's .resize()) to check for this:

    var zoom = document.documentElement.clientWidth / window.innerWidth;
    $(window).resize(function() {
        var zoomNew = document.documentElement.clientWidth / window.innerWidth;
        if (zoom != zoomNew) {
            // zoom has changed
            // adjust your fixed element
            zoom = zoomNew
        }
    });
    

提交回复
热议问题