1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > html5页面强制横屏 移动端如何让页面强制横屏

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

时间:2022-10-28 17:31:28

相关推荐

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

移动设备可以旋转屏幕,但如何做到就算旋转手机页面始终横屏显示呢?首先取得屏幕内可用区域的宽高,然后根据宽高的关系来判断是横屏还是竖屏。如果是竖屏,就把div的宽高设置成横屏的高宽,然后旋转。

好了我的测试页面结构如下:

lol

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

@media screen and (orientation: portrait) {

html{

width : 100% ;

height : 100% ;

background-color: white ;

overflow : hidden;

}

body{

width : 100% ;

height : 100% ;

background-color: red ;

overflow : hidden;

}

#print{

position : absolute ;

background-color: yellow ;

}

}

@media screen and (orientation: landscape) {

html{

width : 100% ;

height : 100% ;

background-color: white ;

}

body{

width : 100% ;

height : 100% ;

background-color: white ;

}

#print{

position : absolute ;

top : 0 ;

left : 0 ;

width : 100% ;

height : 100% ;

background-color: 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);

赏个CALL

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。