移动端如何让页面强制横屏

求横屏显示,不能竖屏。
有经验的你肯定知道,当用户竖屏打开时,提示说你要把手机转过来是在是件很傻×的事情。这时如果用户没开启手机里的横屏模式,还要逼用户去开启。这时候用户早就不耐烦的把你的游戏关掉了。
那么现在的解决办法,就是在竖屏模式下,写一个横屏的div,然后把它转过来。

代码如下:

<body class="webpBack">
  <div id="print">
      <p>lol</p>
   </div>
</body>

很简单对不对,最终的理想状态是,把lol非常和谐的横过来。
好了来看看区分横屏竖屏的css:

@media screen and (orientation: portrait) {
      html{
         width : 100% ;
         height : 100% ;
           padding: 0px;"> white ;
          overflow : hidden;
      }
      body{
          width : 100% ;
         height : 100% ;
          padding: 0px;"> red ;
          overflow : hidden;
      }
      #print{
         position : absolute ;
          padding: 0px;"> yellow ;
      }
}
@media screen and (orientation: landscape) {
       html{
         width : 100% ;
         height : 100% ;
          padding: 0px;"> white ;
      }
       body{
          width : 100% ;
         height : 100% ;
          padding: 0px;"> white ;
      }
           #print{
            position : absolute ;
            top : 0 ;
            left : 0 ;
            width : 100% ;
            height : 100% ;
             padding: 0px;"> yellow ;
         }
}
#print p{
        margin: auto ;
        margin-top : 20px ;
        text-align: center;
      }

说白了,是要把print这个div在竖屏模式下横过来,横屏状态下不变。所以在portrait下,没定义它的宽高。会通过下面的js来补。

  var width = document.documentElement.clientWidth;
  var height =  document.documentElement.clientHeight;
  if( width < height ){
      console.log(width + " " + height);
      $print =  $(‘#print‘);
      $print.width(height);
       $print.height(width);
      $print.css(‘top‘,  (height-width)/2 );
      $print.css(‘left‘,  0-(height-width)/2 );
      $print.css(‘transform‘ , ‘rotate(90deg)‘);
       $print.css(‘transform-origin‘ , ‘50% 50%‘);
 }

在这里我们先取得了屏幕内可用区域的宽高,然后根据宽高的关系来判断是横屏还是竖屏。如果是竖屏,就把print这个div的宽高设置下,对齐,然后旋转。
最终效果如下:

竖屏

横屏

最后,这么做带来的后果是,如果用户手机的旋转屏幕按钮开着,那么当手机横过来之后,会造成一定的悲剧。解决办法如下:

 var evt = "onorientationchange" in window ? "orientationchange" : "resize";

    window.addEventListener(evt, function() {
        console.log(evt);
        var width = document.documentElement.clientWidth;
         var height =  document.documentElement.clientHeight;
          $print =  $(‘#print‘);
         if( width > height ){

            $print.width(width);
            $print.height(height);
            $print.css(‘top‘,  0 );
            $print.css(‘left‘,  0 );
            $print.css(‘transform‘ , ‘none‘);
            $print.css(‘transform-origin‘ , ‘50% 50%‘);
         }
         else{
            $print.width(height);
            $print.height(width);
            $print.css(‘top‘,  (height-width)/2 );
            $print.css(‘left‘,  0-(height-width)/2 );
            $print.css(‘transform‘ , ‘rotate(90deg)‘);
            $print.css(‘transform-origin‘ , ‘50% 50%‘);
         }

    }, false);
时间: 2024-10-03 23:04:36

移动端如何让页面强制横屏的相关文章

H5页面 强制横屏显示 适配IOS和安卓

H5页面 强制横屏显示 适配IOS和安卓 <script> var evt = "onorientationchange" in window ? "orientationchange" : "resize"; $(window).resize(function(){ resize(); }); window.addEventListener(evt, resize(), false); function resize(){ var

Css实现手机端页面强制横屏

样式 @media screen and (orientation: portrait) { html{ width : 100vmin; height : 100vmax; } body{ width : 100vmin; height : 100vmax; } #gyroContain{ width : 100vmax; height : 100vmin; transform-origin: top left; transform: rotate(90deg) translate(0,-10

iOS 个别页面强制横屏,其他页面竖屏

在开发项目的时候,遇到了一个问题,就是其中一个页面需要强制横屏,而其他页面要强制竖屏. 我的解决方法是这样的.在AppDelegate.h里面添加@property(nonatomic,assign)NSInteger allowRotation;在AppDelegate.m文件里面添加 1 - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindo

待解决需求-移动端打开网页强制横屏

待解决需求-移动端打开网页强制横屏[在手机未开启自动横屏的设置时] 或者说: 比如随时可以查看类似Excel.table样子的报表.手机端打开为了宽度看的内容多点(允许底部出现滚动条),所以做好能够横屏过来,然后内容自适应宽度. 或者说: 手机端强制网页横屏,但是里面的内容不要横屏,宽度能自适应. 网上查了下:有用css的  -webkit-transform: rotate(-90deg); 实现.但是它把整个div横屏后,里面的内容也横屏了. 待解决.....................

移动端页面自适应横屏竖屏解决方法思考

之前对于横屏的webapp做过一些尝试,但是始终不是很好的解决方案,前段时间又接触了类似的需求,尝试了感觉更好的解决方案. 之前的方法写的博客:移动网页横竖屏兼容适应的一些体会 这里举的例子还是平时常见的移动端的滑动页面,也就是上下切换页面的"H5". 首先要做的准备: 1.html布局 <div id="wrap"> <div class="pageWrap"> <div class="img11&quo

iOS 9 强制横屏

首先在plist 文件中 Supported interface orientations 选项 只留下一个 portrait 屏幕强制横屏 使用以下代码 self.navigationController.view.transform = CGAffineTransformMakeRotation(M_PI/2); self.navigationController.view.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); [[UI

移动端网站提升页面加载性能的优化技巧

移动端网站提升页面加载性能的优化技巧 收藏到:1时间:2015-06-17   文章来源:马海祥博客   访问次数:2501 网页性能的优化一直是网站成功的关键,越来越多的研究证明,不管是小型电商,还是大型连锁企业,即使是页面加载时间方面的细微改善,都可以带来更多的业务,更多的广告收入,更多的用户粘性和更多的客户满意度. 在过去几年,Web开发者都是基于改善硬件或者提高带宽速度来优化用户体验,但是最近几年,爆炸式的移动Web浏览器的使用打破了这个途径,低带宽,高延迟,小内存,低处理器性能的移动设

iOS强制横屏

iOS强制横屏的两种方式: 第1种:设置状态栏方向,然后vc.view设置transform旋转.注意:VC需要设置为不支持横屏. [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES]; [UIView animateWithDuration:0.25 animations:^{ self.view.transform = CGAf

关于IOS屏幕旋转的几个问题1.常规设置2.个别页面强制固定横竖屏

1.常规设置屏幕旋转  (Device Orientation || info.plist-----这两个地方的设置是同步的) 1)targets->General->Deployment Info->Device Orientation  直接勾选想要的设备定位全局属性 2)Supporting Files->Info.plist->Supported interface orientations 增删属性值 2.个别页面强制横竖屏 新建一个NavigationContro