iPad layout scales up when rotating from portrait to landscape

前端 未结 11 1440
萌比男神i
萌比男神i 2020-12-02 04:32

I have a added to the \"viewport\" meta tag \"width=device-width,initial-scale=1.0\" and on an iPad the page loads up fine in landscape mode, the i

相关标签:
11条回答
  • 2020-12-02 05:06

    When you say it scales the page up, is that all elements, or just the text font size?... For fixing the font size you can use:

    html {
        -webkit-text-size-adjust: 100%;
    }
    
    0 讨论(0)
  • 2020-12-02 05:08

    to meta:

    %meta{content: "width=device-width, initial-scale=1.0, minimum-scale=0.25, maximum-scale=1.6, user-scalable=yes", name: "viewport"}
    

    to global script:

    if navigator.platform.toLowerCase() is "ipad"
      viewport = $ "meta[name='viewport']"
      viewport_content = viewport.attr("content")
    
      # reset initial zoom
      viewport.attr "content", "width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=yes"
      setTimeout =>
        viewport.attr "content", viewport_content
      , 0
    
      # reset zoom on rotate
      timeout = null
      window.onorientationchange = ->
        clearTimeout timeout if timeout?
        viewport.attr "content", "width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=yes"
        timeout = setTimeout =>
          viewport.attr "content", viewport_content
        , 1000
    
    0 讨论(0)
  • 2020-12-02 05:11

    The first fix worked for me with the following changes.

    Change initial scale to .8, minimum to .25 and maximum to 1.6.

    Use the "meta" tag

    <meta name="viewport" content="width=device-width, initial-scale=1">
    
    
    <script ="text/javascript">
    if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i)) {
        var viewportmeta = document.querySelector('meta[name="viewport"]');
        if (viewportmeta) {
            viewportmeta.content = 'width=device-width, minimum-scale=.25, maximum-scale=1.6, initial-scale=.8';
            document.body.addEventListener('gesturestart', function () {
                viewportmeta.content = 'width=device-width, minimum-scale=0.25, maximum-scale=1.6';
            }, false);
        }
    }
    

    0 讨论(0)
  • 2020-12-02 05:12

    ------ Update ------

    This is not an issue anymore in iOS7. And there is better fix by Scott Jehl on github scottjehl/iOS-Orientationchange-Fix that works for iOS6.

    ------ Original answer ------

    Jeremy Keith (@adactio) has a good solution for this on his blog Orientation and scale

    Keep the Markup scalable

    <meta name="viewport" content="width=device-width, initial-scale=1">
    

    Then disable scalability with javascript until gesturestart with this script:

    if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i)) {
        var viewportmeta = document.querySelector('meta[name="viewport"]');
        if (viewportmeta) {
            viewportmeta.content = 'width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0';
            document.body.addEventListener('gesturestart', function () {
                viewportmeta.content = 'width=device-width, minimum-scale=0.25, maximum-scale=1.6';
            }, false);
        }
    }
    
    0 讨论(0)
  • 2020-12-02 05:15

    This one works !

     <script >
    // BUG orientation portrait/lanscape IOS //
    if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i)) {
    var viewportmeta = document.querySelector('meta[name="viewport"]');
    if (viewportmeta) {
        viewportmeta.content = 'width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0';
        document.addEventListener('orientationchange', function () {
            viewportmeta.content = 'width=device-width, minimum-scale=0.25, maximum-scale=1';
        }, false);
      }
    }
    </script>
    
    0 讨论(0)
  • 2020-12-02 05:16

    In order for the script to work and bypass the 2nd gesture minor tweaking like in orienatation change event set the max to 1.00099 instead of just 1.0

    0 讨论(0)
提交回复
热议问题