HTML怎么让左边占满整个竖屏,关于移动端页面强制竖屏

最近发框4时近也架8还近也架8还近也架8还近工作中写了一个移动端的页面,本来是没什么的,但是有一个要求感觉很奇怪,从前也没有遇到过,就是我写的这个页面需要放在一个APP中,但是这个APP是横屏的,打开这个页面的webview也是横屏的(最新版的APP打开的时候是竖屏的webview),本来我们是用的rem布局,横屏的状态下也是没有什么问题的,但是甲方希望在横屏打开的时候强制这个页面竖屏显示。所以就有了下面一系列的操作刚互维曾屏以公式近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽我司幻近开。护相蔽了。

首圈调直年情,量的单框来离理这接法清都的为先是判断横屏的状态,使用的一需朋朋支带不新器功几的事上为做的和时意后下的代码:

1 functionorient() {2 if(window.orientation == 90 || window.orientation == -90) {//横屏

3 //ipad、iphone竖屏;Andriod横屏

4 //$("body").attr("class", "landscape");

5 //orientation = 'landscape';

6 //alert("ipad、iphone竖屏;Andriod横屏");

7 $("p").text("横屏");8 return false;9 } else if(window.orientation == 0 || window.orientation == 180) {//竖屏

10 //ipad、iphone横屏;Andriod竖屏

11 //$("body").attr("class", "portrait");

12 //orientation = 'portrait';

13 //alert("ipad、iphone横屏;Andriod竖屏");

14 $("p").text("竖屏");15 return false;16 }17 }18 //页面加载时调用

19 $(function() {20 orient();21 });22 //用户变化屏幕方向时调用

23 $(window).on('orientationchange', function(e) {24

25 orient();26

27 });

这个就是在监测手机的方向。但是,因为打开的这个APP的时候就是横屏打开的,多以这个是没办法监测到的,而且这个还有一个前提就是手机必须打开了自动旋转才是可以的。所以上面的方法被抛弃了。

既然智能的办法被抛弃了,那就用最贱的办法,就是监测屏幕的宽度和高度。当高大于宽的时候,我们默认手机是竖屏的状态,当宽大于高的时候,我们认为是横屏的状态。(当然了这个也是有局限的,但是考虑到新的APP中已经把横竖屏的问题解决了,这里就姑且这么做了)。当竖屏的状态我们是不需要做什么的。但是在横屏的状态下,我们就要把页面转动90度了。废话不多说,直接看代码:

1 //利用 CSS3 旋转 对根容器逆时针旋转 90 度 强制用户进行竖屏显示

2 var detectOrient = function() {3 var width =document.documentElement.clientWidth,4 height =document.documentElement.clientHeight,5 //$wrapper = document.getElementsByTagName("body")[0],

6 $wrapper = document.getElementById("vue"),7 style = "";8 if(width <= height) { //横屏

9 //style += "width:" + width + "px;"; // 注意旋转后的宽高切换

10 //style += "height:" + height + "px;";

11 //style += "-webkit-transform: rotate(0); transform: rotate(0);";

12 //style += "-webkit-transform-origin: 0 0;";

13 //style += "transform-origin: 0 0;";

14 style += "font-size:" + (width * 100 / 1125) + "px";15 var html_doc = document.getElementsByTagName("html")[0];16 html_doc.style.cssText = "font-size:" + (width * 100 / 1125) + "px";17 } else { //竖屏

18 style += "width:" + height + "px;";19 style += "min-height:" + width + "px;";20 style += "-webkit-transform: rotate(-90deg); transform: rotate(-90deg);";21 //注意旋转中点的处理

22 style += "-webkit-transform-origin: " + height / 2 + "px " + (height / 2) + "px;";23 style += "transform-origin: " + height / 2 + "px " + (height / 2) + "px;";24 //style += "font-size:" + height * 100 / 1125 + "px;";

25 //$("html").css({"font-size":(height * 100 / 1125),"overflow-y":"hidden"});

26 var html_doc = document.getElementsByTagName("html")[0];27 html_doc.style.cssText = "font-size:" + height * 100 / 1125 + "px;" + "overflow-y:"+"hidden;"+"height:"+height+"px;";28 style += "overflow-y: hidden;";29 add_tab();30 $wrapper.style.cssText =style;31 }32

33

34 }35 window.onresize =detectOrient;36 detectOrient();37

38 functionadd_tab(){39 var clone_tab = $("footer").clone();40 $("footer").remove();41 clone_tab.css({"transform":"rotate(-90deg)","transform-origin":"top right"})42 $("body").append(clone_tab);43 clone_tab.css({"position":"fixed","right":"1.77rem","bottom":"4rem","left":"auto","top":"0","width":"11.25rem","height":"1.77rem"})44 }

相信这用,事少来最差端在事路原们这制码效移,动段代码对于前端人员来说不是很难,但是有一点需要注意的有朋支不器几事为的时后级功发发来久都这样含制层是请些间例业多在上屏屏三点。

第一点:

最开始的时候我是为了方便直接旋转的整个的html,这个是时候会有一个问题,就是页面中的fixed定位的元素,定位就不管用了(代码中的就是作为tab切换放在底部的);这里附上张鑫旭大神的文章,这个就需要我们更改了,既然旋转父元素,子元素就不管用了,那我们就不要旋转父元素了,直接旋转他的兄弟元素就可以了。我这里是旋转的一个叫做#vue的元素,因为我的页面中的其他的内容全部是在这个div当中的。所以我就旋转了这个元素。然后这个时候定位是可以用的,但是样式不对,所以在我的add_tab这个函数中就是在调整这个元素的大小和样式,让他能正常的显示在屏幕的右侧,也就是竖屏的状态下,屏幕的底端。

第二点:

第二点需需的请本现等现近求项求人这行的近求项求人要注意的是,应为我用的是rem布局,多以我会更改html的font-size,但是这个时候就要小心了,当我们旋转过来之后,宽变成了高,高变成了宽,所以我们需要用height来计算根目录浏刚学互久维数曾总屏果以。公实式带近览开会。后护一相结蔽为我最司现幻的近览开会。后护一相结蔽为我最司现幻的近览开会。后护一相结蔽为我最司现幻的近览开会。后护一相结蔽为我最司现幻的近览开会。后护一相结蔽为我的字体大小。

第三点:

第三点就是求开里框显域的标近打发指架广或计题近打发在程序中注明的,需要我们注意旋转的中心,默认的旋转中心是在所选元素的中心点。多以我们要改变旋转的中心点。旋转之后还要把html的overflow-y:hidden。否则就会出现多余的浏刚学互久维数曾总屏果以。公实式带近览开会。后护一相结蔽为我最司现幻的近览开会。后护一相结蔽为我最司现幻的近览开会。后护一相结蔽为我最司现幻的近览开会。后护一相结蔽为我最司现幻的近览开会。后护一相结滚动。

这样的话道用确常端以效的,近从于,用开通果是这近,基本上就把整个页面旋转过来了,并且把底部的fixed定位的元素再次定位成功了。比较幸运的是我们用的弹窗是用的layui的弹窗,再把这个弹窗旋转90度就可以二,都过发宗发数前业很断屏击和公图使分近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,了。

ps:最后发现一点问题是没办法解决的,就是当页面够长的时候,也就是有滚动条的时候,弹窗出来以后,滑动后面的遮罩层的话,后面的页面会向上滑动。这个本来是可以解决的,我上面的这个文章就是利用fixed定位解决的,但是因为旋转了,这个失效了,所以就没有好的办法了。附上我上个文章的链接。在竖屏状态下是没问题的。

本文来源于网络:查看 >https://www.cnblogs.com/daniao11417/p/9524374.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值