【问题标题】:How do I change "initial-scale" based on portrait or landscape mode (and orientation change)?如何根据纵向或横向模式(和方向更改)更改“初始比例”?
【发布时间】:2020-10-13 22:59:30
【问题描述】:

我无法根据 iPhone 是处于纵向还是横向模式(以及何时改变方向)来更改“视口”“初始比例”。

我想要以下纵向模式:

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

我想要横向模式下的以下内容:

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

在方向改变后我想要那些秤。

这是我的两次不成功的努力:

<meta name="viewport" content="width=device-width, initial-scale=0.5">
<script type="text/javascript">
    if($(window).width() < 900)
    {
        x=1;
        if(x==1)
        {
            $('meta[name=viewport]').remove();
            $('head').append('<meta name="viewport" content="width=device-width, initial-scale=1.0">');
            x=0;
        };
    };
</script>

https://stackoverflow.com/a/15522332

<script>
        if(screen.width>=1){
            $('head').append('<meta name="viewport" content="width=device-width, initial-scale=0.5">');
        } else {
            $('head').append('<meta name="viewport" content="width=device-width, initial-scale=0.5">');
        }
        $(window).on("orientationchange",function(){
          if(window.orientation == 0) // Portrait 
          {
            $('head').append('<meta name="viewport" content="width=device-width, initial-scale=0.5">');
          } else // Landscape 
          {
            $('head').append('<meta name="viewport" content="width=device-width, initial-scale=1.0">');
          }
        });
</script>

Meta Viewport just on Portrait?

如果可以的话,我会去掉屏幕宽度部分,只关注页面是纵向还是横向。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    您可以在window 上使用window.matchesMediaorientationchange 事件。

    const meta = document.createElement('meta');
    meta.name = "viewport";
    if (window.matchMedia("(orientation: portrait)").matches) {
       meta.content = "width=device-width, initial-scale=0.5";
    } else {
       meta.content = "width=device-width, initial-scale=1.0";
    }
    document.head.appendChild(meta);
    window.addEventListener("orientationchange", function() {
      if(window.orientation == 0){
         meta.content = "width=device-width, initial-scale=0.5";
      } else {
         meta.content = "width=device-width, initial-scale=1.0";
      }
    }, false);
    

    【讨论】:

    • 谢谢!这很好用,除了当我从横向旋转回纵向时,它不会回到 0.5。
    • 是否缺少".on("orientationchange",function(){"?
    • @MikeEpps 如果需要,可以使用orientationchange 事件。请参阅我的更新答案。
    • @MikeEpps 很高兴为您提供帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多