How to detect page zoom level in all modern browsers?

后端 未结 28 1754
慢半拍i
慢半拍i 2020-11-21 05:27
  1. How can I detect the page zoom level in all modern browsers? While this thread tells how to do it in IE7 and IE8, I can\'t find a good cross-browser solution.

28条回答
  •  隐瞒了意图╮
    2020-11-21 05:58

    This may or may not help anyone, but I had a page I could not get to center correctly no matter what Css tricks I tried so I wrote a JQuery file call Center Page:

    The problem occurred with zoom level of the browser, the page would shift based upon if you were 100%, 125%, 150%, etc.

    The code below is in a JQuery file called centerpage.js.

    From my page I had to link to JQuery and this file to get it work, even though my master page already had a link to JQuery.

    Home Page.
    
    
    

    centerpage.js:

    // centering page element
    function centerPage() {
        // get body element
        var body = document.body;
    
        // if the body element exists
        if (body != null) {
            // get the clientWidth
            var clientWidth = body.clientWidth;
    
            // request data for centering
            var windowWidth = document.documentElement.clientWidth;
            var left = (windowWidth - bodyWidth) / 2;
    
            // this is a hack, but it works for me a better method is to determine the 
            // scale but for now it works for my needs
            if (left > 84) {
                // the zoom level is most likely around 150 or higher
                $('#MainBody').removeClass('body').addClass('body150');
            } else if (left < 100) {
                // the zoom level is most likely around 110 - 140
                $('#MainBody').removeClass('body').addClass('body125');
            }
        }
    }
    
    
    // CONTROLLING EVENTS IN jQuery
    $(document).ready(function() {
        // center the page
        centerPage();
    });
    

    Also if you want to center a panel:

    // centering panel
    function centerPanel($panelControl) {
        // if the panel control exists
        if ($panelControl && $panelControl.length) {
            // request data for centering
            var windowWidth = document.documentElement.clientWidth;
            var windowHeight = document.documentElement.clientHeight;
            var panelHeight = $panelControl.height();
            var panelWidth = $panelControl.width();
    
            // centering
            $panelControl.css({
                'position': 'absolute',
                'top': (windowHeight - panelHeight) / 2,
                'left': (windowWidth - panelWidth) / 2
            });
    
            // only need force for IE6
            $('#backgroundPanel').css('height', windowHeight);
        }
    }
    

提交回复
热议问题