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

本文介绍如何通过CSS媒体查询及transform属性实现手机网页在竖屏状态下ECharts图表的横屏显示,提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     最近开发微信公众号的时候遇到一个需求,就是在手机页面上有许多ECharts图形展示。为了更好的用户体验,当用户竖屏打开时我们需要将手机页面的内容横过来,效果如下所示:

      

好了,现在我的项目中html结构如下:

  1. <body>
  2.        <div id="main"></div>     //这是我的画布
  3. </body>

我们利用transform将这个父容器在竖屏状态下整体顺时针旋转90º,这样就得到了一个横屏的状态。但是还不够,因为旋转元素的基点默认为本身的中心点。所以我们需要设置一下它的旋转中心为左上角,即transform-origin: 0% 0%;这样的话页面被“转出了屏幕”停留在屏幕的左侧,最后一步只需要将它往右平移一个屏幕的宽度就刚刚好(left:100vw)。请看示意图:


完整代码如下:

  1. <style type="text/css">
  2.     body{
  3.               position:fixed;       //将body铺满整个屏幕
  4.               width: 100%;
  5.               height: 100%;
  6.               padding: 0;
  7.               margin: 0;
  8.               background-color:rgb(51, 51, 51);
  9.               overflow: hidden;
  10.       }
  11.       #main{    //注意这里:初始时候我们需要将这个div的长宽给设置一下(ps:宽度要大于高度)
  12.                   width:560px;
  13.                   height:320px;
  14.        }
  15.        @media screen and (orientation: portrait){     //竖屏状态下
  16.                     #main{  
  17.                                 position:absolute;
  18.                                 width: 100vh;
  19.                                 height: 100vw;
  20.                                 top: 0;
  21.                                 left: 100vw;
  22.                                 -webkit-transform:rotate(90deg);
  23.                                 -moz-transform: rotate(90deg);
  24.                                 -ms-transform: rotate(90deg);
  25.                                  transform:rotate(90deg);
  26.                                  transform-origin: 0% 0%;
  27.                                  }  
  28.           }
  29.           @media screen and (orientation: landscape) {        //横屏状态下
  30.                     #main {
  31.                                 position:absolute;
  32.                                 top:0;
  33.                                 left:0;
  34.                                 width: 100vw;
  35.                                 height: 100vh;
  36.                                 }
  37.             }
  38. </style>
感谢阅读!如有遗漏之处欢迎指正。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值