h5横竖屏监测,在手机上模拟有时监测有误

  1. 在手机上竖屏打开,提示‘横屏效果更好’
  2. 横屏后,显示“小主真棒”
  3. 然后再竖屏,提示‘横屏效果更好’
  4. 关掉页面
  5. 横着拿手机
  6. 再打开页面(此时手机是横着的),提示‘横屏效果更好’

示例代码
链接

<html>
  <head>
    <meta charset="UTF-8">
    <style>
      html{
        font-size: 100px;
      }
      #example{
        font-size: 35px;
      }
    </style>
  </head>
  <body>
    <div id="example">
      <div v-if="flag" class="landscape-body">
         小主,您真棒,已经横屏~~~{{flag}}
      </div>
      <div v-else class="portrait-body">
        小主,横屏效果更好,把您的设备开启横屏体验吧3333333333~~~{{flag}}
      </div>
    </div>
    <script src="./lib/vue.min.js"></script>
    <script>

      

      var vm = new Vue({
        el:"#example",
        data:{
          flag:true
        },
        created:function(){
          var _this = this;
          window.addEventListener("onorientationchange" in window ? "orientationchange" : "resize", function() {
            _this.orientationFun();
          }, false);
          _this.orientationFun();
        },
        methods:{
          orientationFun:function(){
            var width_doc = screen.width;
            var height_doc =  screen.height; //文档流的高度
                // var _height =  screen.height; //屏幕的高度
            // if (window.orientation == 180 || window.orientation == 0) {
            if(width_doc>height_doc){
              this.flag = true;
            }else{
               this.flag = false;
            }
            // if (window.orientation == 90 || window.orientation == -90 ){
            //   this.flag = false;
            // }
          }
        }
      })
    </script>
  </body>
</html>
阅读 5.5k
2 个回答

希望对你有用

window.addEventListener('orientationchange', function(event){
    if ( window.orientation == 180 || window.orientation==0 ) {
        alert(" 小主,横屏效果更好,把您的设备开启横屏体验吧3333333333~~~");
    }
    if( window.orientation == 90 || window.orientation == -90 ) {
        alert("小主,您真棒,已经横屏~~~");
    }
});
// css  媒体查询
@media screen and (orientation:portrait) {
    /*  css[竖向定义样式]  */
    //竖屏弹框  display:block; 
    //js 控制弹框显示时间
    ......
}

@media screen and (orientation:landscape) {
    /*   css[横向定义样式]  */
     //横屏弹框  display:block; 
    //控制弹框显示时间 js 
    ......

}

只监听resize试一下,我用LZ几乎相同方法,在安卓机型上遇到其他的问题了也,更改只是监听resize事件就可以了LZ可以自己试一下,如果还是不行的话,可以在判断的函数里边强制进行重拍,这是终极办法~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题