密通学院

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3477|回复: 0

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

[复制链接]

282

主题

27

回帖

8万

铜板

超级版主

Rank: 8Rank: 8

积分
89153
QQ
发表于 2019-4-13 00:34:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
现在有 部分网友通过马甲生成app,但是对于有的页面需要横屏显示就没有办法了,可以通过以下办法解决:

在竖屏模式下,写一个横屏的div,然后把它转过来。
  1. <body class="webpBack">
  2.   <div id="print">
  3.       <p>lol</p>  
  4.    </div>
  5. </body>
复制代码


css如下:
  1. @media screen and (orientation: portrait) {
  2.       html{
  3.          width : 100% ;
  4.          height : 100% ;
  5.           background-color: white ;
  6.           overflow : hidden;
  7.       }
  8.       body{
  9.           width : 100% ;
  10.          height : 100% ;
  11.          background-color: red ;
  12.           overflow : hidden;
  13.       }
  14.       #print{
  15.          position : absolute ;
  16.          background-color: yellow ;
  17.       }
  18. }
  19. @media screen and (orientation: landscape) {
  20.        html{
  21.          width : 100% ;
  22.          height : 100% ;
  23.          background-color: white ;
  24.       }
  25.        body{
  26.           width : 100% ;
  27.          height : 100% ;
  28.          background-color: white ;
  29.       }
  30.            #print{
  31.             position : absolute ;
  32.             top : 0 ;
  33.             left : 0 ;
  34.             width : 100% ;
  35.             height : 100% ;
  36.             background-color: yellow ;
  37.          }
  38. }
  39. #print p{
  40.         margin: auto ;
  41.         margin-top : 20px ;
  42.         text-align: center;
  43.       }
复制代码


把print这个div在竖屏模式下横过来,横屏状态下不变。所以在portrait下,没定义它的宽高。会通过下面的js来补。
  1. var width = document.documentElement.clientWidth;
  2.   var height =  document.documentElement.clientHeight;
  3.   if( width < height ){
  4.       console.log(width + " " + height);
  5.       $print =  $('#print');
  6.       $print.width(height);
  7.        $print.height(width);
  8.       $print.css('top',  (height-width)/2 );
  9.       $print.css('left',  0-(height-width)/2 );
  10.       $print.css('transform' , 'rotate(90deg)');
  11.        $print.css('transform-origin' , '50% 50%');
  12. }
复制代码


先取得了屏幕内可用区域的宽高,然后根据宽高的关系来判断是横屏还是竖屏。如果是竖屏,就把print这个div的宽高设置下,对齐,然后旋转。
但是这样的坏处是如果用户手机的旋转屏幕按钮开着,那么当手机横过来之后,会造成一定的悲剧。解决办法如下:
  1. var evt = "onorientationchange" in window ? "orientationchange" : "resize";
  2.       
  3.     window.addEventListener(evt, function() {
  4.         console.log(evt);
  5.         var width = document.documentElement.clientWidth;
  6.          var height =  document.documentElement.clientHeight;
  7.           $print =  $('#print');
  8.          if( width > height ){
  9.            
  10.             $print.width(width);
  11.             $print.height(height);
  12.             $print.css('top',  0 );
  13.             $print.css('left',  0 );
  14.             $print.css('transform' , 'none');
  15.             $print.css('transform-origin' , '50% 50%');
  16.          }
  17.          else{
  18.             $print.width(height);
  19.             $print.height(width);
  20.             $print.css('top',  (height-width)/2 );
  21.             $print.css('left',  0-(height-width)/2 );
  22.             $print.css('transform' , 'rotate(90deg)');
  23.             $print.css('transform-origin' , '50% 50%');
  24.          }
  25.         
  26.     }, false);
复制代码


OK,搞定。
http://www.chubao.cn/s/godness/index.html
如果您有业务需求,可以和我联系:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

首页|Archiver|手机版|小黑屋|密通学院:专业网络营销服务商

GMT+8, 2024-12-27 10:15 , Processed in 0.119141 second(s), 24 queries QQ

Powered by XMT Inc. © 2015-2025 ArrayV1.0 豫ICP备17022382号

系统运营:密城通 豫公网安备 41018302000212 号

快速回复 返回顶部 返回列表